Database Models Reference
Key Prisma models and their relationships.
Multi-Tenant Models
All tenant data MUST use getTenantPrisma(companyId):
typescript
import { getTenantPrisma } from '../infra/prisma.js';
const tenantPrisma = getTenantPrisma(request.user.companyId);Core Models
Company
prisma
model Company {
id String
name String
subscriptionStatus String? // 'active', 'cancelled', etc.
subscriptionPlanName String?
users User[]
socialAccounts SocialAccount[]
brandProfile BrandProfile?
}User
prisma
model User {
id String
email String @unique
name String
role String @default("member")
companyId String
company Company
}SocialAccount
prisma
model SocialAccount {
id String
companyId String
platform String // 'twitter', 'linkedin', etc.
accountId String // Platform's account ID
username String
accessToken String @db.Text
isActive Boolean
}Content Models
CompanyPost
prisma
model CompanyPost {
id String
companyId String
content String
platform String
status String // 'draft', 'scheduled', 'published'
scheduledAt DateTime?
publishedAt DateTime?
campaignId String?
campaign Campaign?
metrics CompanyPostMetric[]
}Campaign
prisma
model Campaign {
id String
companyId String
name String
status String // 'DRAFT', 'ACTIVE', 'COMPLETED'
brief String?
plan Json?
posts CompanyPost[]
blogPosts BlogPost[]
videoScripts VideoScript[]
}BlogPost
prisma
model BlogPost {
id String
companyId String
title String
content String @db.Text
status String
campaignId String?
}Analytics Models
CompanyPostMetric
prisma
model CompanyPostMetric {
id String
postId String
impressions Int
likes Int
comments Int
shares Int
clicks Int
fetchedAt DateTime
}AI Usage Models
UserUsage
prisma
model UserUsage {
id String
userId String
action String
model String
inputTokens Int
outputTokens Int
cost Decimal
createdAt DateTime
}CompanyUsage
prisma
model CompanyUsage {
id String
companyId String
month DateTime
tokens Int
cost Decimal
}Team & Settings
CompanyRole
prisma
model CompanyRole {
id String
companyId String
name String
permissions String[]
isSystem Boolean
isCustom Boolean
}TeamIntegration
prisma
model TeamIntegration {
id String
companyId String
platform String // 'slack', 'discord', 'teams'
webhookUrl String
notificationTypes String[]
isActive Boolean
}Platform Admin Models
FeatureFlag
prisma
model FeatureFlag {
id String
name String
isEnabled Boolean
segments FeatureFlagSegment[]
}PackageConfig
prisma
model PackageConfig {
id String
name String
price Decimal
maxUsers Int
maxAiPosts Int
isActive Boolean
entitlements PlanEntitlement[]
}