diff --git a/index.js b/index.js index 4060bec..f2b2e4a 100644 --- a/index.js +++ b/index.js @@ -23,7 +23,7 @@ app.use(bodyParser.urlencoded({ extended: true })); app.use(express.static("public")); app.use(fileUpload()); -const db = betterSqlite3("./prime.db"); +const db = betterSqlite3("./dbs/0.sqlite"); db.pragma("journal_mode = WAL"); @@ -297,11 +297,7 @@ function createDb(db, structId, name) { `); insertStructureDbStmt.run(dbId, structId, name); - const dbDir = path.join("dbs", dbId.toString()); - if (!fs.existsSync(dbDir)) { - fs.mkdirSync(dbDir, { recursive: true }); - } - const newDbPath = path.join(dbDir, `${name}.sqlite`); + const newDbPath = path.join("dbs", `${dbId}.sqlite`); const newDb = betterSqlite3(newDbPath); newDb.close(); @@ -311,6 +307,14 @@ function createDb(db, structId, name) { return transaction(); } +function attachDb(db, structId, dbId, alias) { + const insertStructureDbStmt = db.prepare(` + INSERT INTO structure_dbs (db_id, structure_id, alias) + VALUES (?, ?, ?) + `); + insertStructureDbStmt.run(dbId, structId, alias); +} + function getFilesForStruct(db, structureId) { let test = db .prepare("SELECT * FROM files WHERE structure_id = ? ORDER BY id DESC") @@ -446,6 +450,12 @@ app.post("/workshop/:structure_id/db", (req, res) => { return smartRedirect(req, res, redirectUrl); }); +app.post("/workshop/:structure_id/db/attach", (req, res) => { + attachDb(db, req.params.structure_id, req.body.db_id, req.body.alias); + const redirectUrl = `/workshop/${req.params.structure_id}/db/${req.body.db_id}`; + return smartRedirect(req, res, redirectUrl); +}); + app.get("/workshop/:structure_id/db/:db_id", (req, res) => { const structdb = getDbForStructure( db, diff --git a/migrations/000_bootstrap_db.sql b/migrations/000_bootstrap_db.sql index 0b98b26..692241e 100644 --- a/migrations/000_bootstrap_db.sql +++ b/migrations/000_bootstrap_db.sql @@ -20,7 +20,7 @@ CREATE TABLE structures ( CREATE TABLE dbs ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, - structure_id INTEGER, + structure_id INTEGER NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, library TEXT NOT NULL DEFAULT "", @@ -75,6 +75,16 @@ CREATE TABLE files ( UNIQUE(path, structure_id) ); +INSERT INTO + structures (id, name, user_id) +VALUES + (0, 'prime', NULL); + +INSERT INTO + dbs (id, name, structure_id, library) +VALUES + (0, 'prime', 0, ''); + -- =========================== -- TRIGGERS -- =========================== diff --git a/views/workshop/new_db_modal.eta b/views/workshop/new_db_modal.eta index 00c370a..05fbaa9 100644 --- a/views/workshop/new_db_modal.eta +++ b/views/workshop/new_db_modal.eta @@ -7,16 +7,42 @@