| @@ -5,7 +5,9 @@ | |||
| "main": "index.js", | |||
| "scripts": { | |||
| "test": "echo \"Error: no test specified\" && exit 1", | |||
| "start": "node index.js" | |||
| "start": "node index.js", | |||
| "setup": "node scripts/setup.js", | |||
| "reset": "node scripts/reset.js" | |||
| }, | |||
| "author": { | |||
| "name": "Martin Dørum Nygaard", | |||
| @@ -0,0 +1,30 @@ | |||
| var fs = require("fs"); | |||
| var pg = require("pg"); | |||
| var conf = JSON.parse(fs.readFileSync("./conf.json")); | |||
| var sql = fs.readFileSync("sql/reset.sql", "utf8"); | |||
| var client = new pg.Client( | |||
| "postgres://"+ | |||
| conf.db.user+":"+ | |||
| conf.db.pass+"@"+ | |||
| conf.db.host+"/"+ | |||
| conf.db.database | |||
| ); | |||
| client.connect(function(err) { | |||
| if (err) { | |||
| return console.log("Couldn't connect: "+err); | |||
| process.exit(); | |||
| } | |||
| client.query(sql, function(err, res) { | |||
| if (err) { | |||
| console.log("Error running query: "+err); | |||
| } else { | |||
| console.log("Database reset."); | |||
| } | |||
| process.exit(); | |||
| }); | |||
| }); | |||
| @@ -0,0 +1,32 @@ | |||
| var fs = require("fs"); | |||
| var pg = require("pg"); | |||
| var conf = JSON.parse(fs.readFileSync("./conf.json")); | |||
| var sql = fs.readFileSync("sql/setup.sql", "utf8"); | |||
| var client = new pg.Client( | |||
| "postgres://"+ | |||
| conf.db.user+":"+ | |||
| conf.db.pass+"@"+ | |||
| conf.db.host+"/"+ | |||
| conf.db.database | |||
| ); | |||
| client.connect(function(err) { | |||
| if (err) { | |||
| console.log("Couldn't connect: "+err); | |||
| console.log("Make sure that the database exists."); | |||
| process.exit(); | |||
| } | |||
| client.query(sql, function(err, res) { | |||
| if (err) { | |||
| console.log("Error running query: "+err); | |||
| console.log("Make sure that the database is empty."); | |||
| } else { | |||
| console.log("Database set up."); | |||
| } | |||
| process.exit(); | |||
| }); | |||
| }); | |||
| @@ -0,0 +1,3 @@ | |||
| DROP TABLE IF EXISTS users CASCADE; | |||
| DROP TABLE IF EXISTS collections CASCADE; | |||
| DROP TABLE IF EXISTS images CASCADE; | |||
| @@ -3,14 +3,14 @@ CREATE TABLE users ( | |||
| username VARCHAR(64) UNIQUE NOT NULL, | |||
| pass_hash CHAR(128) NOT NULL, | |||
| date_created TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW() | |||
| ) | |||
| ); | |||
| CREATE TABLE collections ( | |||
| id SERIAL PRIMARY KEY, | |||
| name VARCHAR(64), | |||
| user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE | |||
| ) | |||
| ); | |||
| CREATE TABLE images ( | |||
| id SERIAL PRIMARY KEY, | |||
| @@ -19,4 +19,4 @@ CREATE TABLE images ( | |||
| extension VARCHAR(16) NOT NULL, | |||
| collection_id INTEGER NOT NULL REFERENCES collections(id) ON DELETE CASCADE | |||
| ) | |||
| ); | |||