model Integration {
id String @id @default(cuid())
type IntegrationType // Type of integration (BigCommerce, Shopify, etc)
organizationId String @unique // Ensures one integration per org for now
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
// Integration-specific credentials stored securely
credentials Json // Stores integration-specific auth data
// Common fields across integrations
storeName String?
storeUrl String?
storeLogo String?
// Integration status
isActive Boolean @default(true)
lastSyncedAt DateTime?
// Metadata for integration-specific data
metadata Json?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([type])
@@index([organizationId])
}
model Organization {
id String @id @default(cuid())
name String
slug String @unique
domain String? @unique // Custom domain for the organization
logo String? // Organization logo URL
brandColor String? // Primary brand color (hex)
metadata Json? // Flexible metadata storage
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Relations
members Member[]
invitations Invitation[]
roles OrganizationRole[]
integration Integration? // One-to-one relation with integration
@@index([name])
@@index([slug])
@@index([domain])
}
model Integration {
id String @id @default(cuid())
type IntegrationType // Type of integration (BigCommerce, Shopify, etc)
organizationId String @unique // Ensures one integration per org for now
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
// Integration-specific credentials stored securely
credentials Json // Stores integration-specific auth data
// Common fields across integrations
storeName String?
storeUrl String?
storeLogo String?
// Integration status
isActive Boolean @default(true)
lastSyncedAt DateTime?
// Metadata for integration-specific data
metadata Json?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([type])
@@index([organizationId])
}
model Organization {
id String @id @default(cuid())
name String
slug String @unique
domain String? @unique // Custom domain for the organization
logo String? // Organization logo URL
brandColor String? // Primary brand color (hex)
metadata Json? // Flexible metadata storage
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Relations
members Member[]
invitations Invitation[]
roles OrganizationRole[]
integration Integration? // One-to-one relation with integration
@@index([name])
@@index([slug])
@@index([domain])
}