diff --git a/prisma/migrations/20250421224829_init/migration.sql b/prisma/migrations/20250421224829_init/migration.sql deleted file mode 100644 index fddcccc..0000000 --- a/prisma/migrations/20250421224829_init/migration.sql +++ /dev/null @@ -1,5 +0,0 @@ --- CreateTable -CREATE TABLE "TestModel" ( - "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - "name" TEXT -); diff --git a/prisma/migrations/20250421230249_init/migration.sql b/prisma/migrations/20250421230249_init/migration.sql deleted file mode 100644 index 466c8e9..0000000 --- a/prisma/migrations/20250421230249_init/migration.sql +++ /dev/null @@ -1,10 +0,0 @@ -/* - Warnings: - - - You are about to drop the `TestModel` table. If the table is not empty, all the data it contains will be lost. - -*/ --- DropTable -PRAGMA foreign_keys=off; -DROP TABLE "TestModel"; -PRAGMA foreign_keys=on; diff --git a/prisma/migrations/20250422210625_feed/migration.sql b/prisma/migrations/20250422210625_feed/migration.sql deleted file mode 100644 index fa58ab0..0000000 --- a/prisma/migrations/20250422210625_feed/migration.sql +++ /dev/null @@ -1,18 +0,0 @@ --- CreateTable -CREATE TABLE "Feed" ( - "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - "name" TEXT NOT NULL, - "url" TEXT NOT NULL, - "guild_id" TEXT NOT NULL, - "active" BOOLEAN NOT NULL, - "created_at" DATETIME NOT NULL, - "updated_at" DATETIME NOT NULL -); - --- CreateTable -CREATE TABLE "Channel" ( - "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - "channel_id" TEXT NOT NULL, - "feedId" INTEGER NOT NULL, - CONSTRAINT "Channel_feedId_fkey" FOREIGN KEY ("feedId") REFERENCES "Feed" ("id") ON DELETE RESTRICT ON UPDATE CASCADE -); diff --git a/prisma/migrations/20250422221356_feed_dates/migration.sql b/prisma/migrations/20250422221356_feed_dates/migration.sql deleted file mode 100644 index dd9807b..0000000 --- a/prisma/migrations/20250422221356_feed_dates/migration.sql +++ /dev/null @@ -1,17 +0,0 @@ --- RedefineTables -PRAGMA defer_foreign_keys=ON; -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_Feed" ( - "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - "name" TEXT NOT NULL, - "url" TEXT NOT NULL, - "guild_id" TEXT NOT NULL, - "active" BOOLEAN NOT NULL, - "created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" DATETIME NOT NULL -); -INSERT INTO "new_Feed" ("active", "created_at", "guild_id", "id", "name", "updated_at", "url") SELECT "active", "created_at", "guild_id", "id", "name", "updated_at", "url" FROM "Feed"; -DROP TABLE "Feed"; -ALTER TABLE "new_Feed" RENAME TO "Feed"; -PRAGMA foreign_keys=ON; -PRAGMA defer_foreign_keys=OFF; diff --git a/prisma/migrations/20250428225814_init/migration.sql b/prisma/migrations/20250428225814_init/migration.sql new file mode 100644 index 0000000..5943499 --- /dev/null +++ b/prisma/migrations/20250428225814_init/migration.sql @@ -0,0 +1,45 @@ +-- CreateTable +CREATE TABLE "Feed" ( + "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "name" TEXT NOT NULL, + "url" TEXT NOT NULL, + "guild_id" TEXT NOT NULL, + "active" BOOLEAN NOT NULL, + "created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" DATETIME NOT NULL +); + +-- CreateTable +CREATE TABLE "Channel" ( + "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "channel_id" TEXT NOT NULL, + "feedId" INTEGER NOT NULL, + CONSTRAINT "Channel_feedId_fkey" FOREIGN KEY ("feedId") REFERENCES "Feed" ("id") ON DELETE RESTRICT ON UPDATE CASCADE +); + +-- CreateTable +CREATE TABLE "Filter" ( + "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "guild_id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "value" TEXT NOT NULL, + "matching_algorithm" TEXT NOT NULL, + "is_insensitive" BOOLEAN NOT NULL, + "is_whitelist" BOOLEAN NOT NULL, + "created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" DATETIME NOT NULL +); + +-- CreateTable +CREATE TABLE "_FeedToFilter" ( + "A" INTEGER NOT NULL, + "B" INTEGER NOT NULL, + CONSTRAINT "_FeedToFilter_A_fkey" FOREIGN KEY ("A") REFERENCES "Feed" ("id") ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT "_FeedToFilter_B_fkey" FOREIGN KEY ("B") REFERENCES "Filter" ("id") ON DELETE CASCADE ON UPDATE CASCADE +); + +-- CreateIndex +CREATE UNIQUE INDEX "_FeedToFilter_AB_unique" ON "_FeedToFilter"("A", "B"); + +-- CreateIndex +CREATE INDEX "_FeedToFilter_B_index" ON "_FeedToFilter"("B"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 7787074..cf75008 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -17,9 +17,10 @@ model Feed { url String guild_id String active Boolean - created_at DateTime @default(now()) - updated_at DateTime @updatedAt + created_at DateTime @default(now()) + updated_at DateTime @updatedAt channels Channel[] + filters Filter[] } model Channel { @@ -28,3 +29,24 @@ model Channel { Feed Feed @relation(fields: [feedId], references: [id]) feedId Int } + +model Filter { + id Int @id @default(autoincrement()) + guild_id String + name String + value String + matching_algorithm MatchingAlgorithms + is_insensitive Boolean + is_whitelist Boolean + created_at DateTime @default(now()) + updated_at DateTime @updatedAt + feeds Feed[] +} + +enum MatchingAlgorithms { + ANY + ALL + EXACT + REGEX + FUZZY +}