Skip to content

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[]
}

TendSocial Documentation