diff --git a/schema.sql b/schema.sql new file mode 100644 index 0000000..2033f9f --- /dev/null +++ b/schema.sql @@ -0,0 +1,41 @@ +-- Drop the tables if they exist (to avoid errors if re-running the script) +DROP TABLE IF EXISTS sessions; +DROP TABLE IF EXISTS users; +DROP TABLE IF EXISTS user_actions; + +-- Create the sessions table +CREATE TABLE IF NOT EXISTS sessions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created DATETIME, + expiration DATETIME, + userid INTEGER, + sessionkey TEXT, + FOREIGN KEY (userid) REFERENCES users(id) -- Foreign key to the users table +); + +-- Create the users table +CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created DATETIME, + username TEXT UNIQUE, + passwordhash TEXT, + scopes TEXT, + email TEXT UNIQUE, + first_name TEXT, + last_name TEXT, + is_active BOOLEAN DEFAULT 1, -- Example of another useful field + last_login DATETIME +); + +-- Create the user_actions table to log actions made by users +CREATE TABLE IF NOT EXISTS user_actions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + userid INTEGER, + timestamp DATETIME, + path TEXT, + status_code INTEGER, + FOREIGN KEY (userid) REFERENCES users(id) -- Foreign key to users +); + +-- create admin user with password admin (hashed) +INSERT INTO users (created, username, passwordhash, scopes, email, first_name, last_name) VALUES (datetime('now'), 'sudo-admin', '8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918', 'admin', 'admin@example.com', 'Admin', 'User'); \ No newline at end of file