Compare commits

...

6 Commits

Author SHA1 Message Date
03acd7be29 🗃️ db: add comment report schema
All checks were successful
Integration Tests / integration-tests (pull_request) Successful in 1m38s
2026-05-26 20:57:59 +07:00
183642805d 🗃️ db: add comment audit logs in schema 2026-05-25 21:00:00 +07:00
72a33377eb 🗃️ db: add comment and comment like schema 2026-05-24 11:21:52 +07:00
9d6857f08c 🗃️ db: add video service schema 2026-05-24 11:12:05 +07:00
b43210fca6 🗃️ db: add video submission schema 2026-05-24 10:50:20 +07:00
f35e38b1fe 🗃️ db: add video and episode schemas 2026-05-24 10:43:34 +07:00

View File

@ -73,6 +73,18 @@ enum status_submission {
rejected rejected
} }
enum like_type {
like
dislike
}
enum audit_action {
delete
restore
edit
flag
}
/** /**
@ -113,6 +125,17 @@ model User {
reviewed_media MediaSubmission[] @relation("MediaSubmissionReviewer") reviewed_media MediaSubmission[] @relation("MediaSubmissionReviewer")
updated_media Media[] @relation("MediaUpdater") updated_media Media[] @relation("MediaUpdater")
deleted_media Media[] @relation("MediaDeleter") deleted_media Media[] @relation("MediaDeleter")
created_episodes Episode[]
submitted_videos VideoSubmission[] @relation("VideoSubmissionSubmitter")
reviewed_videos VideoSubmission[] @relation("VideoSubmissionReviewer")
submitted_video_services VideoServiceSubmission[] @relation("VideoServiceSubmissionSubmitter")
reviewed_video_services VideoServiceSubmission[] @relation("VideoServiceSubmissionReviewer")
comments Comment[]
comment_likes CommentLike[]
comment_audit_logs CommentAuditLog[]
comment_reports CommentReport[]
@@index([email])
@@index([username])
@@map("users") @@map("users")
} }
@ -534,6 +557,157 @@ model Staff {
@@map("staff") @@map("staff")
} }
model Episode {
id String @id @db.Uuid @default(uuid(7))
media_id String @db.Uuid
episode Int @db.SmallInt
mal_url String? @db.VarChar(255)
forum_url String? @db.VarChar(255)
title String @db.VarChar(155)
title_origin String? @db.VarChar(155)
title_romanji String? @db.VarChar(155)
aired_at DateTime? @db.Date
filler Boolean
recap Boolean
total_score Int @default(0)
score_count Int @default(0)
deleted_at DateTime? @db.Timestamptz()
updated_at DateTime @updatedAt @db.Timestamptz()
created_at DateTime @default(now()) @db.Timestamptz()
created_by User @relation(fields: [created_by_id], references: [id])
videos Video[]
created_by_id String @db.Uuid
comments Comment[]
@@index([media_id, episode])
@@map("episodes")
}
model Video {
id String @id @db.Uuid @default(uuid(7))
service VideoService[]
Episode Episode @relation(fields: [episode_id], references: [id])
video_code String @db.VarChar(255)
short_code String? @db.VarChar(255)
thumbnail_code String? @db.VarChar(255)
download_code String? @db.VarChar(255)
created_at DateTime @default(now()) @db.Timestamptz()
deleted_at DateTime? @db.Timestamptz()
updated_at DateTime @updatedAt @db.Timestamptz()
episode_id String @db.Uuid
created_by_id String @db.Uuid
video_submission VideoSubmission?
@@map("videos")
}
model VideoSubmission {
video_id String @id @db.Uuid
created_by User @relation(fields: [created_by_id], references: [id], name: "VideoSubmissionSubmitter")
reviewer User? @relation(fields: [reviewer_id], references: [id], name: "VideoSubmissionReviewer")
status status_submission @default(pending)
reviewed_at DateTime? @db.Timestamptz()
reason String? @db.Text
created_at DateTime @default(now()) @db.Timestamptz()
created_by_id String @db.Uuid
reviewer_id String? @db.Uuid
video Video @relation(fields: [video_id], references: [id])
@@map("video_submissions")
}
model VideoService {
id String @id @db.Uuid @default(uuid(7))
name String @db.VarChar(155)
resolution Int @db.SmallInt
domain String @db.VarChar(255)
image_url String? @db.VarChar(255)
hex_color String? @db.VarChar(10)
endpoint_video String @db.VarChar(255)
endpoint_short String? @db.VarChar(255)
endpoint_image String? @db.VarChar(255)
endpoint_download String? @db.VarChar(255)
deleted_at DateTime? @db.Timestamptz()
updated_at DateTime @updatedAt @db.Timestamptz()
created_at DateTime @default(now()) @db.Timestamptz()
videos Video[]
video_service_submissions VideoServiceSubmission?
@@unique([name, resolution])
@@map("video_services")
}
model VideoServiceSubmission {
video_service_id String @id @db.Uuid
created_by User @relation(fields: [created_by_id], references: [id], name: "VideoServiceSubmissionSubmitter")
status status_submission @default(pending)
reviewer User? @relation(fields: [reviewer_id], references: [id], name: "VideoServiceSubmissionReviewer")
reviewed_at DateTime? @db.Timestamptz()
reason String? @db.Text
created_at DateTime @default(now()) @db.Timestamptz()
video_service VideoService @relation(fields: [video_service_id], references: [id])
created_by_id String @db.Uuid
reviewer_id String? @db.Uuid
@@map("video_service_submissions")
}
model Comment {
id String @id @db.Uuid @default(uuid(7))
user User @relation(fields: [user_id], references: [id])
episode Episode @relation(fields: [episode_id], references: [id])
content String @db.Text
created_at DateTime @default(now()) @db.Timestamptz()
updated_at DateTime @updatedAt @db.Timestamptz()
deleted_at DateTime? @db.Timestamptz()
user_id String @db.Uuid
episode_id String @db.Uuid
likes CommentLike[]
audit_logs CommentAuditLog[]
reports CommentReport[]
@@map("comments")
}
model CommentLike {
user_id String @db.Uuid
comment_id String @db.Uuid
type like_type
created_at DateTime @default(now()) @db.Timestamptz()
user User @relation(fields: [user_id], references: [id])
comment Comment @relation(fields: [comment_id], references: [id])
@@id([user_id, comment_id])
@@map("comment_likes")
}
model CommentAuditLog {
id String @id @db.Uuid @default(uuid(7))
comment Comment @relation(fields: [comment_id], references: [id])
performed_by User @relation(fields: [performed_by_id], references: [id])
action audit_action
created_at DateTime @default(now()) @db.Timestamptz()
comment_id String @db.Uuid
performed_by_id String @db.Uuid
@@map("comment_audit_logs")
}
model CommentReport {
id String @id @db.Uuid @default(uuid(7))
reporter User @relation(fields: [reporter_id], references: [id])
comment Comment @relation(fields: [comment_id], references: [id])
title String @db.VarChar(115)
status status_submission
description String? @db.Text
reported_at DateTime @default(now()) @db.Timestamptz()
closed_at DateTime? @db.Timestamptz()
reporter_id String @db.Uuid
comment_id String @db.Uuid
@@map("comment_reports")
}
/** /**