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[] oauthApp OAuthApp[] oauthAuthorizations OAuthAuthorization[] @@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) oauthAuthorizations OAuthAuthorization[] @@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[] oauthApps OAuthApp[] @@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) creationMethod CreationMethod @default(UNKNOWN) 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([creationMethod]) @@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") } model OAuthApp { id String @id @default(uuid()) organizationId String name String description String? pictureId String? redirectUrl String clientId String @unique clientSecret String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt deletedAt DateTime? organization Organization @relation(fields: [organizationId], references: [id]) picture Media? @relation(fields: [pictureId], references: [id]) authorizations OAuthAuthorization[] @@unique([organizationId, deletedAt]) @@index([clientId]) @@index([organizationId]) @@index([deletedAt]) } model OAuthAuthorization { id String @id @default(uuid()) oauthAppId String userId String organizationId String accessToken String? authorizationCode String? codeExpiresAt DateTime? revokedAt DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt oauthApp OAuthApp @relation(fields: [oauthAppId], references: [id]) user User @relation(fields: [userId], references: [id]) organization Organization @relation(fields: [organizationId], references: [id]) @@unique([oauthAppId, userId, organizationId]) @@index([accessToken]) @@index([authorizationCode]) @@index([oauthAppId]) @@index([userId]) @@index([organizationId]) @@index([revokedAt]) } 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 CreationMethod { UNKNOWN WEB MCP API AUTOPOST CLI } enum ShortLinkPreference { ASK YES NO } enum AnnouncementColor { INFO WARNING ERROR } model Announcement { id String @id @default(uuid()) title String description String color AnnouncementColor @default(INFO) createdAt DateTime @default(now()) }