-- CreateTable CREATE TABLE "Author" ( "sec_uid" TEXT NOT NULL, "uid" TEXT, "nickname" TEXT NOT NULL, "signature" TEXT, "avatar_url" TEXT, "follower_count" BIGINT NOT NULL DEFAULT 0, "total_favorited" BIGINT NOT NULL DEFAULT 0, "unique_id" TEXT, "short_id" TEXT, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "Author_pkey" PRIMARY KEY ("sec_uid") ); -- CreateTable CREATE TABLE "Video" ( "aweme_id" TEXT NOT NULL, "desc" TEXT NOT NULL, "preview_title" TEXT, "duration_ms" INTEGER NOT NULL, "created_at" TIMESTAMP(3) NOT NULL, "share_url" TEXT NOT NULL, "digg_count" BIGINT NOT NULL DEFAULT 0, "comment_count" BIGINT NOT NULL DEFAULT 0, "share_count" BIGINT NOT NULL DEFAULT 0, "collect_count" BIGINT NOT NULL DEFAULT 0, "width" INTEGER, "height" INTEGER, "fps" INTEGER, "cover_url" TEXT, "authorId" TEXT NOT NULL, "tags" TEXT[], "video_url" TEXT NOT NULL, "raw_json" JSONB, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "Video_pkey" PRIMARY KEY ("aweme_id") ); -- CreateTable CREATE TABLE "CommentUser" ( "id" TEXT NOT NULL, "nickname" TEXT NOT NULL, "avatar_url" TEXT, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "CommentUser_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "Comment" ( "cid" TEXT NOT NULL, "text" TEXT NOT NULL, "digg_count" BIGINT NOT NULL DEFAULT 0, "created_at" TIMESTAMP(3) NOT NULL, "videoId" TEXT, "imagePostId" TEXT, "userId" TEXT NOT NULL, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "Comment_pkey" PRIMARY KEY ("cid") ); -- CreateTable CREATE TABLE "CommentImage" ( "id" TEXT NOT NULL, "commentId" TEXT NOT NULL, "url" TEXT NOT NULL, "order" INTEGER NOT NULL, "width" INTEGER, "height" INTEGER, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "CommentImage_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "ImagePost" ( "aweme_id" TEXT NOT NULL, "desc" TEXT NOT NULL, "created_at" TIMESTAMP(3) NOT NULL, "share_url" TEXT NOT NULL, "digg_count" BIGINT NOT NULL DEFAULT 0, "comment_count" BIGINT NOT NULL DEFAULT 0, "share_count" BIGINT NOT NULL DEFAULT 0, "collect_count" BIGINT NOT NULL DEFAULT 0, "authorId" TEXT NOT NULL, "tags" TEXT[], "music_url" TEXT, "raw_json" JSONB, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "ImagePost_pkey" PRIMARY KEY ("aweme_id") ); -- CreateTable CREATE TABLE "ImageFile" ( "id" TEXT NOT NULL, "postId" TEXT NOT NULL, "url" TEXT NOT NULL, "order" INTEGER NOT NULL, "width" INTEGER, "height" INTEGER, "animated" TEXT, "duration" INTEGER, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "ImageFile_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "VideoTranscript" ( "id" TEXT NOT NULL, "videoId" TEXT NOT NULL, "speech_detected" BOOLEAN NOT NULL, "language" TEXT, "audio_type" TEXT, "transcript" TEXT[], "non_speech_summary" TEXT, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "VideoTranscript_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "Author_uid_key" ON "Author"("uid"); -- CreateIndex CREATE INDEX "Video_authorId_idx" ON "Video"("authorId"); -- CreateIndex CREATE INDEX "Video_created_at_idx" ON "Video"("created_at"); -- CreateIndex CREATE UNIQUE INDEX "CommentUser_nickname_avatar_url_key" ON "CommentUser"("nickname", "avatar_url"); -- CreateIndex CREATE INDEX "Comment_videoId_created_at_idx" ON "Comment"("videoId", "created_at"); -- CreateIndex CREATE INDEX "Comment_imagePostId_created_at_idx" ON "Comment"("imagePostId", "created_at"); -- CreateIndex CREATE INDEX "CommentImage_commentId_order_idx" ON "CommentImage"("commentId", "order"); -- CreateIndex CREATE UNIQUE INDEX "CommentImage_commentId_order_key" ON "CommentImage"("commentId", "order"); -- CreateIndex CREATE INDEX "ImagePost_authorId_idx" ON "ImagePost"("authorId"); -- CreateIndex CREATE INDEX "ImagePost_created_at_idx" ON "ImagePost"("created_at"); -- CreateIndex CREATE INDEX "ImageFile_postId_order_idx" ON "ImageFile"("postId", "order"); -- CreateIndex CREATE UNIQUE INDEX "ImageFile_postId_order_key" ON "ImageFile"("postId", "order"); -- CreateIndex CREATE UNIQUE INDEX "VideoTranscript_videoId_key" ON "VideoTranscript"("videoId"); -- CreateIndex CREATE INDEX "VideoTranscript_videoId_idx" ON "VideoTranscript"("videoId"); -- AddForeignKey ALTER TABLE "Video" ADD CONSTRAINT "Video_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "Author"("sec_uid") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "Comment" ADD CONSTRAINT "Comment_videoId_fkey" FOREIGN KEY ("videoId") REFERENCES "Video"("aweme_id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "Comment" ADD CONSTRAINT "Comment_imagePostId_fkey" FOREIGN KEY ("imagePostId") REFERENCES "ImagePost"("aweme_id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "Comment" ADD CONSTRAINT "Comment_userId_fkey" FOREIGN KEY ("userId") REFERENCES "CommentUser"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "CommentImage" ADD CONSTRAINT "CommentImage_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES "Comment"("cid") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "ImagePost" ADD CONSTRAINT "ImagePost_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "Author"("sec_uid") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "ImageFile" ADD CONSTRAINT "ImageFile_postId_fkey" FOREIGN KEY ("postId") REFERENCES "ImagePost"("aweme_id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "VideoTranscript" ADD CONSTRAINT "VideoTranscript_videoId_fkey" FOREIGN KEY ("videoId") REFERENCES "Video"("aweme_id") ON DELETE CASCADE ON UPDATE CASCADE;