postiz-app/libraries/nestjs-libraries/src/database/prisma/schema.prisma
2026-02-20 12:30:31 +07:00

895 lines
27 KiB
Text

generator client {
provider = "prisma-client-js"
runtime = "nodejs"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Organization {
id String @id @default(uuid())
name String
description String?
apiKey String?
paymentId String?
streakSince DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
allowTrial Boolean @default(false)
isTrailing Boolean @default(false)
shortlink ShortLinkPreference @default(ASK)
autoPost AutoPost[]
Comments Comments[]
credits Credits[]
customers Customer[]
errors Errors[]
github GitHub[]
Integration Integration[]
media Media[]
buyerOrganization MessagesGroup[]
notifications Notifications[]
plugs Plugs[]
post Post[] @relation("organization")
submittedPost Post[] @relation("submittedForOrg")
sets Sets[]
signatures Signatures[]
subscription Subscription?
tags Tags[]
thirdParty ThirdParty[]
usedCodes UsedCodes[]
users UserOrganization[]
webhooks Webhooks[]
@@index([apiKey])
@@index([streakSince])
@@index([paymentId])
}
model Tags {
id String @id @default(uuid())
name String
color String
orgId String
deletedAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
organization Organization @relation(fields: [orgId], references: [id])
posts TagsPosts[]
@@index([orgId])
@@index([deletedAt])
}
model TagsPosts {
postId String
tagId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
post Post @relation(fields: [postId], references: [id])
tag Tags @relation(fields: [tagId], references: [id])
@@id([postId, tagId])
@@unique([postId, tagId])
}
model User {
id String @id @default(uuid())
email String
password String?
providerName Provider
name String?
lastName String?
isSuperAdmin Boolean @default(false)
bio String?
audience Int @default(0)
pictureId String?
providerId String?
timezone Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
lastReadNotifications DateTime @default(now())
inviteId String?
activated Boolean @default(true)
account String?
connectedAccount Boolean @default(false)
lastOnline DateTime @default(now())
ip String?
agent String?
comments Comments[]
items ItemUser[]
groupBuyer MessagesGroup[] @relation("groupBuyer")
groupSeller MessagesGroup[] @relation("groupSeller")
orderBuyer Orders[] @relation("orderBuyer")
orderSeller Orders[] @relation("orderSeller")
payoutProblems PayoutProblems[]
agencies SocialMediaAgency?
picture Media? @relation(fields: [pictureId], references: [id])
organizations UserOrganization[]
sendSuccessEmails Boolean @default(true)
sendFailureEmails Boolean @default(true)
sendStreakEmails Boolean @default(true)
@@unique([email, providerName])
@@index([lastReadNotifications])
@@index([inviteId])
@@index([account])
@@index([lastOnline])
@@index([pictureId])
}
model UsedCodes {
id String @id @default(uuid())
code String
orgId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
organization Organization @relation(fields: [orgId], references: [id])
@@index([code])
}
model UserOrganization {
id String @id @default(uuid())
userId String
organizationId String
disabled Boolean @default(false)
role Role @default(USER)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
organization Organization @relation(fields: [organizationId], references: [id])
user User @relation(fields: [userId], references: [id])
@@unique([userId, organizationId])
@@index([disabled])
}
model GitHub {
id String @id @default(uuid())
login String?
name String?
token String
jobId String?
organizationId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
organization Organization @relation(fields: [organizationId], references: [id])
@@index([login])
@@index([organizationId])
}
model Trending {
id String @id @default(uuid())
trendingList String
language String? @unique
hash String
date DateTime
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([hash])
}
model TrendingLog {
id String @id @default(uuid())
language String?
date DateTime
}
model ItemUser {
id String @id @default(uuid())
userId String
key String
user User @relation(fields: [userId], references: [id])
@@unique([userId, key])
@@index([userId])
@@index([key])
}
model Star {
id String @id @default(uuid())
stars Int
totalStars Int
forks Int
totalForks Int
login String
date DateTime @default(now()) @db.Date
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([login, date])
}
model Media {
id String @id @default(uuid())
name String
originalName String?
path String
organizationId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
fileSize Int @default(0)
type String @default("image")
thumbnail String?
alt String?
thumbnailTimestamp Int?
organization Organization @relation(fields: [organizationId], references: [id])
agencies SocialMediaAgency[]
userPicture User[]
@@index([name])
@@index([organizationId])
@@index([type])
}
model SocialMediaAgency {
id String @id @default(uuid())
userId String @unique
name String
logoId String?
website String?
slug String?
facebook String?
instagram String?
twitter String?
linkedIn String?
youtube String?
tiktok String?
otherSocialMedia String?
shortDescription String
description String
approved Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
logo Media? @relation(fields: [logoId], references: [id])
user User @relation(fields: [userId], references: [id])
niches SocialMediaAgencyNiche[]
@@index([userId])
@@index([deletedAt])
@@index([id])
}
model SocialMediaAgencyNiche {
agencyId String
niche String
agency SocialMediaAgency @relation(fields: [agencyId], references: [id])
@@id([agencyId, niche])
}
model Credits {
id String @id @default(uuid())
organizationId String
credits Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
type String @default("ai_images")
organization Organization @relation(fields: [organizationId], references: [id])
@@index([organizationId])
@@index([createdAt])
}
model Subscription {
id String @id @default(cuid())
organizationId String @unique
subscriptionTier SubscriptionTier
identifier String?
cancelAt DateTime?
period Period
totalChannels Int
isLifetime Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
organization Organization @relation(fields: [organizationId], references: [id])
@@index([organizationId])
@@index([deletedAt])
}
model Customer {
id String @id @default(uuid())
name String
orgId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
organization Organization @relation(fields: [orgId], references: [id])
integrations Integration[]
@@unique([orgId, name, deletedAt])
}
model Integration {
id String @id @default(cuid())
internalId String
organizationId String
name String
picture String?
providerIdentifier String
type String
token String
disabled Boolean @default(false)
tokenExpiration DateTime?
refreshToken String?
profile String?
deletedAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime? @updatedAt
inBetweenSteps Boolean @default(false)
refreshNeeded Boolean @default(false)
postingTimes String @default("[{\"time\":120}, {\"time\":400}, {\"time\":700}]")
customInstanceDetails String?
customerId String?
rootInternalId String?
additionalSettings String? @default("[]")
exisingPlugData ExisingPlugData[]
customer Customer? @relation(fields: [customerId], references: [id])
organization Organization @relation(fields: [organizationId], references: [id])
webhooks IntegrationsWebhooks[]
orderItems OrderItems[]
plugs Plugs[]
posts Post[]
@@unique([organizationId, internalId])
@@index([rootInternalId])
@@index([organizationId])
@@index([providerIdentifier])
@@index([updatedAt])
@@index([createdAt])
@@index([deletedAt])
@@index([customerId])
@@index([inBetweenSteps])
@@index([refreshNeeded])
@@index([disabled])
}
model Signatures {
id String @id @default(uuid())
organizationId String
content String
autoAdd Boolean
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
organization Organization @relation(fields: [organizationId], references: [id])
@@index([createdAt])
@@index([organizationId])
@@index([deletedAt])
}
model Comments {
id String @id @default(uuid())
content String
organizationId String
postId String
userId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
organization Organization @relation(fields: [organizationId], references: [id])
post Post @relation(fields: [postId], references: [id])
user User @relation(fields: [userId], references: [id])
@@index([createdAt])
@@index([organizationId])
@@index([userId])
@@index([postId])
@@index([deletedAt])
}
model Post {
id String @id @default(cuid())
state State @default(QUEUE)
publishDate DateTime
organizationId String
integrationId String
content String
delay Int @default(0)
group String
title String?
description String?
parentPostId String?
releaseId String?
releaseURL String?
settings String?
image String?
submittedForOrderId String?
submittedForOrganizationId String?
approvedSubmitForOrder APPROVED_SUBMIT_FOR_ORDER @default(NO)
lastMessageId String?
intervalInDays Int?
error String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
comments Comments[]
errors Errors[]
payoutProblems PayoutProblems[]
integration Integration @relation(fields: [integrationId], references: [id])
lastMessage Messages? @relation(fields: [lastMessageId], references: [id])
organization Organization @relation("organization", fields: [organizationId], references: [id])
parentPost Post? @relation("parentPostId", fields: [parentPostId], references: [id])
childrenPost Post[] @relation("parentPostId")
submittedForOrder Orders? @relation(fields: [submittedForOrderId], references: [id])
submittedForOrganization Organization? @relation("submittedForOrg", fields: [submittedForOrganizationId], references: [id])
tags TagsPosts[]
@@index([group])
@@index([deletedAt])
@@index([publishDate])
@@index([state])
@@index([organizationId])
@@index([parentPostId])
@@index([submittedForOrderId])
@@index([intervalInDays])
@@index([approvedSubmitForOrder])
@@index([lastMessageId])
@@index([createdAt])
@@index([updatedAt])
@@index([releaseURL])
@@index([integrationId])
}
model Notifications {
id String @id @default(uuid())
organizationId String
content String
link String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
organization Organization @relation(fields: [organizationId], references: [id])
@@index([createdAt])
@@index([organizationId])
@@index([deletedAt])
}
model MessagesGroup {
id String @id @default(uuid())
buyerOrganizationId String
buyerId String
sellerId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
messages Messages[]
buyer User @relation("groupBuyer", fields: [buyerId], references: [id])
buyerOrganization Organization @relation(fields: [buyerOrganizationId], references: [id])
seller User @relation("groupSeller", fields: [sellerId], references: [id])
orders Orders[]
@@unique([buyerId, sellerId])
@@index([createdAt])
@@index([updatedAt])
@@index([buyerOrganizationId])
}
model PayoutProblems {
id String @id @default(uuid())
status String
orderId String
userId String
postId String?
amount Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
order Orders @relation(fields: [orderId], references: [id])
post Post? @relation(fields: [postId], references: [id])
user User @relation(fields: [userId], references: [id])
}
model Orders {
id String @id @default(uuid())
buyerId String
sellerId String
status OrderStatus
messageGroupId String
captureId String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
ordersItems OrderItems[]
buyer User @relation("orderBuyer", fields: [buyerId], references: [id])
messageGroup MessagesGroup @relation(fields: [messageGroupId], references: [id])
seller User @relation("orderSeller", fields: [sellerId], references: [id])
payoutProblems PayoutProblems[]
posts Post[]
@@index([buyerId])
@@index([sellerId])
@@index([updatedAt])
@@index([createdAt])
@@index([messageGroupId])
}
model OrderItems {
id String @id @default(uuid())
orderId String
integrationId String
quantity Int
price Int
integration Integration @relation(fields: [integrationId], references: [id])
order Orders @relation(fields: [orderId], references: [id])
@@index([orderId])
@@index([integrationId])
}
model Messages {
id String @id @default(uuid())
from From
content String?
groupId String
special String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
group MessagesGroup @relation(fields: [groupId], references: [id])
posts Post[]
@@index([groupId])
@@index([createdAt])
@@index([deletedAt])
}
model Plugs {
id String @id @default(uuid())
organizationId String
plugFunction String
data String
integrationId String
activated Boolean @default(true)
integration Integration @relation(fields: [integrationId], references: [id])
organization Organization @relation(fields: [organizationId], references: [id])
@@unique([plugFunction, integrationId])
@@index([organizationId])
}
model ExisingPlugData {
id String @id @default(uuid())
integrationId String
methodName String
value String
integration Integration @relation(fields: [integrationId], references: [id])
@@unique([integrationId, methodName, value])
}
model PopularPosts {
id String @id @default(uuid())
category String
topic String
content String
hook String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model IntegrationsWebhooks {
integrationId String
webhookId String
integration Integration @relation(fields: [integrationId], references: [id])
webhook Webhooks @relation(fields: [webhookId], references: [id])
@@id([integrationId, webhookId])
@@unique([integrationId, webhookId])
@@index([integrationId])
@@index([webhookId])
}
model Webhooks {
id String @id @default(uuid())
name String
organizationId String
url String
deletedAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
integrations IntegrationsWebhooks[]
organization Organization @relation(fields: [organizationId], references: [id])
@@index([organizationId])
@@index([deletedAt])
}
model AutoPost {
id String @id @default(uuid())
organizationId String
title String
content String?
onSlot Boolean
syncLast Boolean
url String
lastUrl String
active Boolean
addPicture Boolean
generateContent Boolean
integrations String
deletedAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
organization Organization @relation(fields: [organizationId], references: [id])
@@index([deletedAt])
}
model Sets {
id String @id @default(uuid())
organizationId String
name String
content String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
organization Organization @relation(fields: [organizationId], references: [id])
@@index([organizationId])
}
model ThirdParty {
id String @id @default(uuid())
organizationId String
identifier String
name String
internalId String
apiKey String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
organization Organization @relation(fields: [organizationId], references: [id])
@@unique([organizationId, internalId])
@@index([organizationId])
@@index([deletedAt])
}
model Errors {
id String @id @default(uuid())
message String
platform String
organizationId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
postId String
body String @default("{}")
organization Organization @relation(fields: [organizationId], references: [id])
post Post @relation(fields: [postId], references: [id])
@@index([organizationId])
@@index([createdAt])
}
model Mentions {
name String
username String
platform String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
image String
@@id([name, username, platform, image])
@@index([createdAt])
}
/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.
model mastra_ai_spans {
traceId String
spanId String
parentSpanId String?
name String
scope Json?
spanType String
attributes Json?
metadata Json?
links Json?
input Json?
output Json?
error Json?
startedAt DateTime @db.Timestamp(6)
endedAt DateTime? @db.Timestamp(6)
createdAt DateTime @db.Timestamp(6)
updatedAt DateTime? @db.Timestamp(6)
isEvent Boolean
startedAtZ DateTime? @default(now()) @db.Timestamptz(6)
endedAtZ DateTime? @default(now()) @db.Timestamptz(6)
createdAtZ DateTime? @default(now()) @db.Timestamptz(6)
updatedAtZ DateTime? @default(now()) @db.Timestamptz(6)
@@index([name], map: "public_mastra_ai_spans_name_idx")
@@index([parentSpanId, startedAt(sort: Desc)], map: "public_mastra_ai_spans_parentspanid_startedat_idx")
@@index([spanType, startedAt(sort: Desc)], map: "public_mastra_ai_spans_spantype_startedat_idx")
@@index([traceId, startedAt(sort: Desc)], map: "public_mastra_ai_spans_traceid_startedat_idx")
@@ignore
}
/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.
model mastra_evals {
input String
output String
result Json
agent_name String
metric_name String
instructions String
test_info Json?
global_run_id String
run_id String
created_at DateTime @db.Timestamp(6)
createdAt DateTime? @db.Timestamp(6)
created_atZ DateTime? @default(now()) @db.Timestamptz(6)
createdAtZ DateTime? @default(now()) @db.Timestamptz(6)
@@index([agent_name, created_at(sort: Desc)], map: "public_mastra_evals_agent_name_created_at_idx")
@@ignore
}
model mastra_messages {
id String @id
thread_id String
content String
role String
type String
createdAt DateTime @db.Timestamp(6)
resourceId String?
createdAtZ DateTime? @default(now()) @db.Timestamptz(6)
@@index([thread_id, createdAt(sort: Desc)], map: "public_mastra_messages_thread_id_createdat_idx")
}
model mastra_resources {
id String @id
workingMemory String?
metadata Json?
createdAt DateTime @db.Timestamp(6)
updatedAt DateTime @db.Timestamp(6)
createdAtZ DateTime? @default(now()) @db.Timestamptz(6)
updatedAtZ DateTime? @default(now()) @db.Timestamptz(6)
}
model mastra_scorers {
id String @id
scorerId String
traceId String?
runId String
scorer Json
preprocessStepResult Json?
extractStepResult Json?
analyzeStepResult Json?
score Float
reason String?
metadata Json?
preprocessPrompt String?
extractPrompt String?
generateScorePrompt String?
generateReasonPrompt String?
analyzePrompt String?
reasonPrompt String?
input Json
output Json
additionalContext Json?
runtimeContext Json?
entityType String?
entity Json?
entityId String?
source String
resourceId String?
threadId String?
createdAt DateTime @db.Timestamp(6)
updatedAt DateTime @db.Timestamp(6)
createdAtZ DateTime? @default(now()) @db.Timestamptz(6)
updatedAtZ DateTime? @default(now()) @db.Timestamptz(6)
spanId String?
@@index([traceId, spanId, createdAt(sort: Desc)], map: "public_mastra_scores_trace_id_span_id_created_at_idx")
}
model mastra_threads {
id String @id
resourceId String
title String
metadata String?
createdAt DateTime @db.Timestamp(6)
updatedAt DateTime @db.Timestamp(6)
createdAtZ DateTime? @default(now()) @db.Timestamptz(6)
updatedAtZ DateTime? @default(now()) @db.Timestamptz(6)
@@index([resourceId, createdAt(sort: Desc)], map: "public_mastra_threads_resourceid_createdat_idx")
}
model mastra_traces {
id String @id
parentSpanId String?
name String
traceId String
scope String
kind Int
attributes Json?
status Json?
events Json?
links Json?
other String?
startTime BigInt
endTime BigInt
createdAt DateTime @db.Timestamp(6)
createdAtZ DateTime? @default(now()) @db.Timestamptz(6)
@@index([name, startTime(sort: Desc)], map: "public_mastra_traces_name_starttime_idx")
}
model mastra_workflow_snapshot {
workflow_name String
run_id String
resourceId String?
snapshot String
createdAt DateTime @db.Timestamp(6)
updatedAt DateTime @db.Timestamp(6)
createdAtZ DateTime? @default(now()) @db.Timestamptz(6)
updatedAtZ DateTime? @default(now()) @db.Timestamptz(6)
@@unique([workflow_name, run_id], map: "public_mastra_workflow_snapshot_workflow_name_run_id_key")
}
enum OrderStatus {
PENDING
ACCEPTED
CANCELED
COMPLETED
}
enum From {
BUYER
SELLER
}
enum State {
QUEUE
PUBLISHED
ERROR
DRAFT
}
enum SubscriptionTier {
STANDARD
PRO
TEAM
ULTIMATE
}
enum Period {
MONTHLY
YEARLY
}
enum Provider {
LOCAL
GITHUB
GOOGLE
FARCASTER
WALLET
GENERIC
}
enum Role {
SUPERADMIN
ADMIN
USER
}
enum APPROVED_SUBMIT_FOR_ORDER {
NO
WAITING_CONFIRMATION
YES
}
enum ShortLinkPreference {
ASK
YES
NO
}