From: Chris Fulljames Date: Tue, 11 Feb 2025 12:30:41 +0000 (-0500) Subject: Initial work on playlists X-Git-Url: https://littlesong.place/gitweb/?a=commitdiff_plain;h=62c1511ae6a1b132b2428d0eb8f16a55eb70d004;p=littlesongplace.git Initial work on playlists --- diff --git a/main.py b/main.py index d777b48..f615961 100644 --- a/main.py +++ b/main.py @@ -690,6 +690,47 @@ def new_activity(): def site_news(): return render_template("news.html") +@app.post("/create-playlist") +def create_playlist(): + if not "userid" in session: + return redirect("/login") + + name = request.form["name"] + if not name: + flash_and_log("Playlist must have a name", "error") + return redirect(request.referrer) + + timestamp = datetime.now(timezone.utc).isoformat() + + private = request.form["type"] == "private" + + query_db( + "insert into playlists (created, updated, userid, name, private) values (?, ?, ?, ?, ?)", + args=[ + timestamp, + timestamp, + session["userid"], + name, + private, + ] + ) + +@app.post("/delete-playlist/") +def delete_playlist(playlistid): + query_db("delete from playlists where playlistid = ?", args=[playlistid]) + +@app.get("/edit-playlist") +def edit_playlist_get(): + abort(404) + +@app.post("/edit-playlist") +def edit_playlist_post(): + abort(404) + +@app.get("/playlists/") +def playlists(playlistid): + abort(404) + def flash_and_log(msg, category=None): flash(msg, category) username = session["username"] if "username" in session else "N/A" diff --git a/schema.sql b/schema.sql index f70f7df..fb7695f 100644 --- a/schema.sql +++ b/schema.sql @@ -5,7 +5,10 @@ CREATE TABLE users ( username TEXT UNIQUE NOT NULL, password BLOB NOT NULL, bio TEXT, - activitytime TEXT + activitytime TEXT, + bgcolor TEXT, + fgcolor TEXT, + accolor TEXT, ); CREATE INDEX users_by_name ON users(username); @@ -63,5 +66,5 @@ CREATE TABLE song_comment_notifications ( ); CREATE INDEX idx_song_comment_notifications_by_target ON song_comment_notifications(targetuserid); -PRAGMA user_version = 1; +PRAGMA user_version = 2; diff --git a/schema_update.sql b/schema_update.sql index 598e8ba..a153516 100644 --- a/schema_update.sql +++ b/schema_update.sql @@ -1,6 +1,24 @@ -ALTER TABLE users ADD COLUMN bgcolor TEXT; -ALTER TABLE users ADD COLUMN fgcolor TEXT; -ALTER TABLE users ADD COLUMN accolor TEXT; +CREATE TABLE playlists ( + playlistid INTEGER PRIMARY KEY, + created TEXT NOT NULL, + updated TEXT NOT NULL, + userid INTEGER NOT NULL, + name TEXT NOT NULL, + private INTEGER NOT NULL, -PRAGMA user_version = 2; + FOREIGN KEY(userid) REFERENCES users(userid) +); + +CREATE TABLE playlist_songs ( + playlistid INTEGER NOT NULL, + position INTEGER NOT NULL, + songid INTEGER NOT NULL, + + PRIMARY KEY(playlistid, position), + FOREIGN KEY(playlistid) REFERENCES playlists(playlistid), + FOREIGN KEY(songid) REFERENCES songs(songid) +); +CREATE INDEX playlist_songs_by_playlist ON playlist_songs(playlistid); + +PRAGMA user_version = 3;