db init stuff
This commit is contained in:
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -1,5 +1,8 @@
|
|||||||
{
|
{
|
||||||
"cSpell.words": [
|
"cSpell.words": [
|
||||||
|
"Inno",
|
||||||
|
"longtext",
|
||||||
|
"tinyint",
|
||||||
"xivplan"
|
"xivplan"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,6 @@ export const config = {
|
|||||||
},
|
},
|
||||||
db: {
|
db: {
|
||||||
host: 'localhost',
|
host: 'localhost',
|
||||||
localhost: 'localhost',
|
|
||||||
port: 3306,
|
port: 3306,
|
||||||
username: '',
|
username: '',
|
||||||
password: '',
|
password: '',
|
||||||
|
|||||||
14
db/client.ts
Normal file
14
db/client.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { Client } from '@mysql';
|
||||||
|
|
||||||
|
import config from '~config';
|
||||||
|
|
||||||
|
const dbClient = await new Client().connect({
|
||||||
|
hostname: config.db.host,
|
||||||
|
port: config.db.port,
|
||||||
|
db: config.db.name,
|
||||||
|
username: config.db.username,
|
||||||
|
password: config.db.password,
|
||||||
|
charset: 'utf8mb4',
|
||||||
|
});
|
||||||
|
|
||||||
|
export default dbClient;
|
||||||
46
db/initialize.ts
Normal file
46
db/initialize.ts
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
import config from '~config';
|
||||||
|
|
||||||
|
import dbClient from './client.ts';
|
||||||
|
|
||||||
|
console.log('Attempting to create DB');
|
||||||
|
await dbClient.execute(`CREATE SCHEMA IF NOT EXISTS ${config.db.name};`);
|
||||||
|
await dbClient.execute(`USE ${config.db.name}`);
|
||||||
|
console.log('DB created');
|
||||||
|
|
||||||
|
console.log('Attempt to drop all tables');
|
||||||
|
await dbClient.execute(`DROP TABLE IF EXISTS plans;`);
|
||||||
|
await dbClient.execute(`DROP TABLE IF EXISTS users;`);
|
||||||
|
console.log('Tables dropped');
|
||||||
|
|
||||||
|
console.log('Attempting to create table users');
|
||||||
|
await dbClient.execute(`
|
||||||
|
CREATE TABLE users (
|
||||||
|
id varchar(20) NOT NULL,
|
||||||
|
name varchar(20) NOT NULL,
|
||||||
|
pin varchar(16) NOT NULL,
|
||||||
|
email varchar(255) NULL,
|
||||||
|
deleteCode varchar(20) NULL,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE KEY users_id_UNIQUE (id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
`);
|
||||||
|
console.log('Table created');
|
||||||
|
|
||||||
|
console.log('Attempting to create table plans');
|
||||||
|
await dbClient.execute(`
|
||||||
|
CREATE TABLE plans (
|
||||||
|
id varchar(20) NOT NULL,
|
||||||
|
ownerId varchar(20) NOT NULL,
|
||||||
|
name varchar(200) NOT NULL,
|
||||||
|
folder varchar(200) NOT NULL,
|
||||||
|
data longtext NOT NULL,
|
||||||
|
deleted tinyint(1) NOT NULL DEFAULT 0,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
CONSTRAINT plans_ownerId_FK FOREIGN KEY (ownerId) REFERENCES users (id) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||||
|
UNIQUE KEY plans_id_UNIQUE (id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
`);
|
||||||
|
console.log('Table created');
|
||||||
|
|
||||||
|
await dbClient.close();
|
||||||
|
console.log('Done!');
|
||||||
16
mod.ts
16
mod.ts
@@ -1,13 +1,27 @@
|
|||||||
|
import { customAlphabet } from '@nanoid';
|
||||||
import { STATUS_CODE, STATUS_TEXT, StatusCode } from '@std/http';
|
import { STATUS_CODE, STATUS_TEXT, StatusCode } from '@std/http';
|
||||||
|
|
||||||
import config from '~config';
|
import config from '~config';
|
||||||
|
|
||||||
|
// Using custom alphabet to exclude - and _
|
||||||
|
const alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
||||||
|
const nanoid = customAlphabet(alphabet, 20);
|
||||||
|
|
||||||
|
const genericResponse = (status: StatusCode, customText = '') =>
|
||||||
|
new Response(customText || STATUS_TEXT[status], { status: status, statusText: STATUS_TEXT[status] });
|
||||||
|
|
||||||
Deno.serve({ port: config.api.port }, async (req) => {
|
Deno.serve({ port: config.api.port }, async (req) => {
|
||||||
|
const [urlPath, tempQ] = req.url.split('?');
|
||||||
|
const path = (urlPath.split('api/')[1] ?? '').toLowerCase().trim();
|
||||||
|
console.log(urlPath, path);
|
||||||
|
|
||||||
if (req.method === 'GET') {
|
if (req.method === 'GET') {
|
||||||
// handle all gets
|
// handle all gets
|
||||||
|
} else if (path === '/auth') {
|
||||||
|
return new Response(nanoid());
|
||||||
} else {
|
} else {
|
||||||
// handle auth then all other shiz
|
// handle auth then all other shiz
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Response(STATUS_TEXT[STATUS_CODE.NotImplemented]);
|
return genericResponse(STATUS_CODE.NotImplemented);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user