generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model Contact { id String @id @default(cuid()) ethereumAddress String @unique ethereumAddress2 String? warpcastAddress String? ensName String? name String? farcaster String? twitter String? discord String? telegram String? email String? otherSocial String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Relations nftHoldings NftHolding[] tokenHoldings TokenHolding[] daoMemberships DaoMembership[] notes Note[] tags TagsOnContacts[] } model NftHolding { id String @id @default(cuid()) contactId String contractAddress String tokenId String collectionName String? acquiredAt DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt contact Contact @relation(fields: [contactId], references: [id], onDelete: Cascade) @@unique([contactId, contractAddress, tokenId]) } model TokenHolding { id String @id @default(cuid()) contactId String contractAddress String tokenSymbol String? balance String lastUpdated DateTime @default(now()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt contact Contact @relation(fields: [contactId], references: [id], onDelete: Cascade) @@unique([contactId, contractAddress]) } model DaoMembership { id String @id @default(cuid()) contactId String daoName String daoType String joinedAt DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt contact Contact @relation(fields: [contactId], references: [id], onDelete: Cascade) @@unique([contactId, daoName]) } model Note { id String @id @default(cuid()) contactId String content String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt contact Contact @relation(fields: [contactId], references: [id], onDelete: Cascade) } model Tag { id String @id @default(cuid()) name String @unique color String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt contacts TagsOnContacts[] } model TagsOnContacts { contactId String tagId String assignedAt DateTime @default(now()) contact Contact @relation(fields: [contactId], references: [id], onDelete: Cascade) tag Tag @relation(fields: [tagId], references: [id], onDelete: Cascade) @@id([contactId, tagId]) } model DataSource { id String @id @default(cuid()) name String @unique type String description String? lastScraped DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model ScrapingJob { id String @id @default(cuid()) sourceName String status String startedAt DateTime? completedAt DateTime? recordsProcessed Int @default(0) recordsAdded Int @default(0) recordsUpdated Int @default(0) errorMessage String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }