buku icon indicating copy to clipboard operation
buku copied to clipboard

SQLite table for tags

Open sjehuda opened this issue 4 months ago • 2 comments

Feature requests

This is a proposal to add two tables to the database.

Table: Bookmarks
Columns: Bookmark_ID, Bookmark_Title, ...

Table: Tags
Columns: Tag_ID, Tag_Name

Table: Bookmarks_Tags
Columns: Bookmark_ID, Tag_ID

This should be storage wise and accelerate queries.

See my implementation at Slixfeed/sqlite.py


        tagged_feeds_table_sql = (
            """
            CREATE TABLE IF NOT EXISTS tagged_feeds (
                id INTEGER NOT NULL,
                feed_id INTEGER NOT NULL,
                tag_id INTEGER NOT NULL,
                FOREIGN KEY ("feed_id") REFERENCES "feeds" ("id")
                  ON UPDATE CASCADE
                  ON DELETE CASCADE,
                FOREIGN KEY ("tag_id") REFERENCES "tags" ("id")
                  ON UPDATE CASCADE
                  ON DELETE CASCADE,
                PRIMARY KEY ("id")
              );
            """
            )

sjehuda avatar Apr 30 '24 06:04 sjehuda

                id INTEGER NOT NULL,
                feed_id INTEGER NOT NULL,
                tag_id INTEGER NOT NULL,
--              ...
                PRIMARY KEY ("id")

Wouldn't the primary key be normally feed_id, tag_id in such tables (without a need for a dedicated id column)?

LeXofLeviafan avatar Apr 30 '24 07:04 LeXofLeviafan

Yes, and I think this is what Liferea does too.

I am not an expert, so please do not consider my advises fully.

sjehuda avatar Apr 30 '24 08:04 sjehuda