def dreams_importer():
return render_template("dreams-importer.html")
+@bp.get("/next-in-queue")
+def get_next_in_queue():
+ # Check for pending imports, set error status
+ result = db.query("SELECT * FROM import_queue WHERE status = 1")
+ for row in result:
+ db.query(
+ "UPDATE import_queue SET status = 2 WHERE queueid = ?",
+ [row["queueid"]])
+
+ # Get next queued import
+ result = db.query(
+ """
+ SELECT * FROM import_queue
+ WHERE status = 0
+ LIMIT 1
+ """, one=True)
+
+ response = {"next": None}
+ if result:
+ response["next"] = dict(result)
+
+ # Set pending status
+ db.query(
+ "UPDATE import_queue SET status = 1 WHERE queueid = ?",
+ [result["queueid"]])
+
+ db.commit()
+
+ return response
+
+# TODO: Local/admin only
+@bp.get("/reset-queue")
+def reset_queue():
+ # Reset all pending (1) and error (2) statuses to queued (0)
+ result = db.query("SELECT * FROM import_queue WHERE status = 1 OR status = 2")
+ for row in result:
+ db.query(
+ "UPDATE import_queue SET status = 0 WHERE queueid = ?",
+ [row["queueid"]])
+ db.commit()
+
+ return {"status": "ok"}
+
+# TODO: Local/admin only
+@bp.get("/delete/<int:queueid>")
+def delete_entry(queueid):
+ db.query("DELETE FROM import_queue WHERE queueid = ?", [queueid])
+ db.commit()
+ return {"status": "ok"}
+
+ALTER TABLE songs ADD COLUMN queueid INTEGER REFERENCES import_queue(queueid) ON DELETE SET NULL;
+
+-- DROP TABLE IF EXISTS import_queue;
+CREATE TABLE import_queue (
+ queueid INTEGER PRIMARY KEY AUTOINCREMENT,
+ indreamsurl TEXT NOT NULL,
+ created TEXT NOT NULL,
+ songid INTEGER NOT NULL REFERENCES songs(songid) ON DELETE CASCADE,
+ status INTEGER NOT NULL
+);
PRAGMA user_version = 8;