From 35ccdc450de33bb5b62816e2259c2b3ce124d085 Mon Sep 17 00:00:00 2001 From: ben Date: Sun, 2 Aug 2026 19:22:58 +0200 Subject: [PATCH] added database --- calendar.db | Bin 0 -> 45056 bytes cheese | 0 cheese.py | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 calendar.db delete mode 100644 cheese create mode 100644 cheese.py diff --git a/calendar.db b/calendar.db new file mode 100644 index 0000000000000000000000000000000000000000..77a865a5be0d2e2f05b4f5629dae25203eb3c9e5 GIT binary patch literal 45056 zcmeI&(Qn#D9KdnhCXmpjiPQ(Hd%BkhP|(z<57QndjZ&vYAtWUrEz%^*fRkDRo7yH_ z9^0-j`xCZ5WB*3?w&(pFd))bKh)n=Bujq>e_~H+X*!`TEsxbEn24?(dssvRaHF+Y~Ng38-!Lk2}H;ES++^q ziI>Jvt=sH~(v|19S0&X=^hx#CM*X;)G-jYV8YgY+Q))bg)&CjB9$;(P`UgylQ2ys))96WVDS|-8hfu8I+wtMVz+e7@LM< zsn^cywUn9~G=ePs=*Wleye%CUsNhk?q+04kBhneD| z&j(ut{pnNf_ru$0#$gP$@5V1k0+$L(+Njp;oHkmr*@@BW#1r#9Z?rsyec!f1Z%L3< z2*R7OJs0CRma0NUa_l?TR;WVQn*=veD964x_5y3DLK($Bbi(0WKk@hmcF^~oap-ui z`j{m0GE@A}44u)!Mz%XxSf@sO?F3HGkukVgIPO&SqS2e4J5*DM;AX>Lo$CYNx(rw4 zdVImmMW(ns?tAW~= z=(?_b(r2+yK?pYQ=-+?aaIM8F&wKB#`kUam*U{eB_Xf$j?Y0_kx^jIX>)1ETc zsZ^_M=Jg--RW3mc66DVw=JkUE?Ls*u+izgMo7i$q%@sE?HglEbXx3HPvhv|uP1$~Y zqWVXPeD+u0u{=j@|1#h$4Sg}%huu4Xa$vjkV59K$C zt>|0DPV}-Dz3@N)0R#|0009ILKmY**5I_KdbrmQ^6XW;)x`vl|A%Fk^2q1s}0tg_0 z00Iagpai)8Pa+_I00IagfB*srAbD8~00IagfB*srAb@}_1Q0*~0R#|0009ILKmdXN0diJ)k^lez literal 0 HcmV?d00001 diff --git a/cheese b/cheese deleted file mode 100644 index e69de29..0000000 diff --git a/cheese.py b/cheese.py new file mode 100644 index 0000000..d021037 --- /dev/null +++ b/cheese.py @@ -0,0 +1,85 @@ +import sqlite3 + +DB_NAME = "calendar.db" + +conn = sqlite3.connect(DB_NAME) +cur = conn.cursor() + +cur.execute(""" +CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT NOT NULL UNIQUE, + password_hash TEXT NOT NULL +); +""") + +cur.execute(""" +CREATE TABLE IF NOT EXISTS rooms ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + owner_id INTEGER NOT NULL, + invite_code TEXT UNIQUE, + + FOREIGN KEY (owner_id) REFERENCES users(id) +); +""") + +cur.execute(""" +CREATE TABLE IF NOT EXISTS room_members ( + room_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, + role TEXT NOT NULL DEFAULT 'member', + + PRIMARY KEY (room_id, user_id), + + FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE +); +""") + +cur.execute(""" +CREATE TABLE IF NOT EXISTS events ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + room_id INTEGER NOT NULL, + creator_id INTEGER NOT NULL, + + type TEXT NOT NULL CHECK(type IN ('private', 'busy', 'proposal')), + title TEXT NOT NULL, + description TEXT, + + start_time TEXT NOT NULL, + end_time TEXT NOT NULL, + + visibility TEXT NOT NULL CHECK(visibility IN ('private', 'busy_only', 'room')), + status TEXT NOT NULL DEFAULT 'draft' + CHECK(status IN ('draft', 'proposed', 'confirmed', 'cancelled')), + + min_people INTEGER DEFAULT 0, + + FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE, + FOREIGN KEY (creator_id) REFERENCES users(id) +); +""") + +cur.execute(""" +CREATE TABLE IF NOT EXISTS event_signups ( + event_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, + status TEXT NOT NULL DEFAULT 'going' + CHECK(status IN ('going', 'maybe', 'declined')), + + PRIMARY KEY (event_id, user_id), + + FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE CASCADE, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE +); +""") + +conn.commit() + +print("Database aangemaakt.") +print("Tabellen:") +for row in cur.execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;"): + print(" -", row[0]) + +conn.close() \ No newline at end of file