feat: add the tiktok integration

This commit is contained in:
Pierre Ryssen
2026-03-10 15:14:14 +01:00
parent 0dca836cf5
commit cd15c81b53
18 changed files with 701 additions and 39 deletions

View File

@@ -0,0 +1,67 @@
-- CreateTable
CREATE TABLE "User" (
"id" TEXT NOT NULL,
"email" TEXT NOT NULL,
"password" TEXT NOT NULL,
"name" TEXT,
"role" TEXT NOT NULL DEFAULT 'member',
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "TikTokToken" (
"id" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"openId" TEXT NOT NULL,
"accessToken" TEXT NOT NULL,
"refreshToken" TEXT NOT NULL,
"expiresAt" TIMESTAMP(3) NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "TikTokToken_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "TrackedAccount" (
"id" TEXT NOT NULL,
"platform" TEXT NOT NULL,
"username" TEXT NOT NULL,
"accountId" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "TrackedAccount_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Snapshot" (
"id" TEXT NOT NULL,
"accountId" TEXT NOT NULL,
"followers" INTEGER NOT NULL,
"views" INTEGER NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Snapshot_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
-- CreateIndex
CREATE UNIQUE INDEX "TikTokToken_userId_key" ON "TikTokToken"("userId");
-- CreateIndex
CREATE UNIQUE INDEX "TikTokToken_openId_key" ON "TikTokToken"("openId");
-- AddForeignKey
ALTER TABLE "TikTokToken" ADD CONSTRAINT "TikTokToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "TrackedAccount" ADD CONSTRAINT "TrackedAccount_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Snapshot" ADD CONSTRAINT "Snapshot_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "TrackedAccount"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@@ -0,0 +1,12 @@
-- CreateTable
CREATE TABLE "TikTokPKCE" (
"id" TEXT NOT NULL,
"state" TEXT NOT NULL,
"codeVerifier" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "TikTokPKCE_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "TikTokPKCE_state_key" ON "TikTokPKCE"("state");

View File

@@ -0,0 +1,8 @@
/*
Warnings:
- Added the required column `userId` to the `TikTokPKCE` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "TikTokPKCE" ADD COLUMN "userId" TEXT NOT NULL;

View File

@@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (e.g., Git)
provider = "postgresql"

View File

@@ -8,14 +8,35 @@ datasource db {
}
model User {
id String @id @default(cuid())
email String @unique
password String
name String?
role String @default("member")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
accounts TrackedAccount[]
id String @id @default(cuid())
email String @unique
password String
name String?
role String @default("member")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
accounts TrackedAccount[]
tiktokToken TikTokToken?
}
model TikTokToken {
id String @id @default(cuid())
userId String @unique
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
openId String @unique
accessToken String
refreshToken String
expiresAt DateTime
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model TikTokPKCE {
id String @id @default(cuid())
state String @unique
codeVerifier String
userId String
createdAt DateTime @default(now())
}
model TrackedAccount {