70 lines
2.0 KiB
SQL
70 lines
2.0 KiB
SQL
BEGIN TRANSACTION;
|
|
CREATE TABLE IF NOT EXISTS "user" (
|
|
"id" INTEGER NOT NULL UNIQUE,
|
|
"name" TEXT NOT NULL UNIQUE,
|
|
"display_name" TEXT NOT NULL UNIQUE,
|
|
"reference" TEXT NOT NULL UNIQUE,
|
|
"motto" TEXT NOT NULL DEFAULT "",
|
|
"password_hash" TEXT NOT NULL,
|
|
"is_admin" INTEGER NOT NULL DEFAULT 0,
|
|
"is_live" INTEGER NOT NULL DEFAULT 1,
|
|
"password_from_admin" INTEGER NOT NULL DEFAULT 0,
|
|
PRIMARY KEY("id" AUTOINCREMENT)
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "wish" (
|
|
"id" INTEGER NOT NULL UNIQUE,
|
|
"name" TEXT NOT NULL,
|
|
"recipient_id" INTEGER NOT NULL,
|
|
"claimant_id" INTEGER,
|
|
"creator_id" INTEGER NOT NULL,
|
|
"sent" INTEGER NOT NULL DEFAULT 0,
|
|
PRIMARY KEY("id" AUTOINCREMENT),
|
|
FOREIGN KEY("recipient_id") REFERENCES "user"("id"),
|
|
FOREIGN KEY("creator_id") REFERENCES "user"("id"),
|
|
FOREIGN KEY("claimant_id") REFERENCES "user"("id")
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "group" (
|
|
"id" INTEGER NOT NULL UNIQUE,
|
|
"name" TEXT NOT NULL UNIQUE,
|
|
"reference" TEXT NOT NULL UNIQUE,
|
|
PRIMARY KEY("id" AUTOINCREMENT)
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "group_member" (
|
|
"id" INTEGER NOT NULL UNIQUE,
|
|
"group_id" INTEGER NOT NULL,
|
|
"user_id" INTEGER NOT NULL,
|
|
PRIMARY KEY("id" AUTOINCREMENT),
|
|
UNIQUE("user_id","group_id"),
|
|
FOREIGN KEY("group_id") REFERENCES "group"("id"),
|
|
FOREIGN KEY("user_id") REFERENCES "user"("id")
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "session" (
|
|
"id" INTEGER NOT NULL UNIQUE,
|
|
"key" TEXT NOT NULL UNIQUE,
|
|
"user_id" INTEGER NOT NULL,
|
|
"expiry" TEXT NOT NULL,
|
|
PRIMARY KEY("id" AUTOINCREMENT),
|
|
FOREIGN KEY("user_id") REFERENCES "user"("id")
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "event" (
|
|
"id" INTEGER NOT NULL UNIQUE,
|
|
"actor_id" INTEGER NOT NULL,
|
|
"action_type" TEXT NOT NULL,
|
|
"target_type" TEXT NOT NULL,
|
|
"target_id" INTEGER NOT NULL,
|
|
"created_at" TEXT NOT NULL DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ')),
|
|
PRIMARY KEY("id" AUTOINCREMENT)
|
|
);
|
|
|
|
DROP VIEW IF EXISTS "v_user";
|
|
CREATE VIEW "v_user"
|
|
AS
|
|
SELECT * FROM user WHERE user.is_live = 1;
|
|
|
|
-- DROP VIEW IF EXISTS "v_wish";
|
|
-- CREATE VIEW "v_wish"
|
|
-- AS
|
|
-- SELECT wish.id, wish.name, wish.sent FROM wish JOIN user AS recipient;
|
|
|
|
COMMIT;
|