Files
warmbly/internal/seed/ids.go
T
2026-05-24 12:01:53 +00:00

105 lines
5.1 KiB
Go

package seed
import (
"fmt"
"github.com/google/uuid"
)
// Stable UUIDs for every seeded entity. Using fixed IDs makes the seed truly
// idempotent (ON CONFLICT DO NOTHING needs a predictable conflict target) and
// makes data easy to reference from manual tests.
//
// Convention: zero-padded namespace prefixes per domain.
var (
// Plans (00000000-0000-0000-0000-0000000001xx).
// PlanFreeTrialID is the well-known UUID already inserted by migration 000015.
PlanFreeTrialID = uuid.MustParse("00000000-0000-0000-0000-000000000001")
PlanStarterID = uuid.MustParse("00000000-0000-0000-0000-000000000110")
PlanProMonthlyID = uuid.MustParse("00000000-0000-0000-0000-000000000120")
PlanProYearlyID = uuid.MustParse("00000000-0000-0000-0000-000000000121")
PlanEnterpriseID = uuid.MustParse("00000000-0000-0000-0000-000000000130")
// Workers (00000000-0000-0000-0000-0000000002xx).
WorkerFreeID = uuid.MustParse("00000000-0000-0000-0000-000000000201")
WorkerSharedID = uuid.MustParse("00000000-0000-0000-0000-000000000202")
WorkerDedicatedID = uuid.MustParse("00000000-0000-0000-0000-000000000203")
// Users (00000000-0000-0000-0000-0000000003xx).
UserAdminID = uuid.MustParse("00000000-0000-0000-0000-000000000301")
UserOwnerID = uuid.MustParse("00000000-0000-0000-0000-000000000302")
UserFounderID = uuid.MustParse("00000000-0000-0000-0000-000000000303")
UserManagerID = uuid.MustParse("00000000-0000-0000-0000-000000000304")
UserViewerID = uuid.MustParse("00000000-0000-0000-0000-000000000305")
// Organisations (00000000-0000-0000-0000-0000000004xx).
OrgAcmeID = uuid.MustParse("00000000-0000-0000-0000-000000000401")
OrgGlobexID = uuid.MustParse("00000000-0000-0000-0000-000000000402")
// Subscriptions (00000000-0000-0000-0000-0000000005xx).
SubAcmeID = uuid.MustParse("00000000-0000-0000-0000-000000000501")
SubGlobexID = uuid.MustParse("00000000-0000-0000-0000-000000000502")
// Email accounts (00000000-0000-0000-0000-0000000006xx).
EmailAcmeAliceID = uuid.MustParse("00000000-0000-0000-0000-000000000601")
EmailAcmeBobID = uuid.MustParse("00000000-0000-0000-0000-000000000602")
EmailGlobexHansID = uuid.MustParse("00000000-0000-0000-0000-000000000603")
// Campaigns (00000000-0000-0000-0000-0000000007xx).
CampaignAcmeActiveID = uuid.MustParse("00000000-0000-0000-0000-000000000701")
CampaignAcmeDraftID = uuid.MustParse("00000000-0000-0000-0000-000000000702")
CampaignGlobexID = uuid.MustParse("00000000-0000-0000-0000-000000000703")
// Sequences (00000000-0000-0000-0000-0000000008xx).
SequenceAcmeStep1ID = uuid.MustParse("00000000-0000-0000-0000-000000000801")
SequenceAcmeStep2ID = uuid.MustParse("00000000-0000-0000-0000-000000000802")
SequenceAcmeStep3ID = uuid.MustParse("00000000-0000-0000-0000-000000000803")
SequenceDraftID = uuid.MustParse("00000000-0000-0000-0000-000000000804")
SequenceGlobexID = uuid.MustParse("00000000-0000-0000-0000-000000000805")
// API key (00000000-0000-0000-0000-0000000009xx).
APIKeyAcmeID = uuid.MustParse("00000000-0000-0000-0000-000000000901")
// Folders / Tags / Categories (00000000-0000-0000-0000-000000000Axx).
FolderInboxID = uuid.MustParse("00000000-0000-0000-0000-000000000a01")
FolderClosedID = uuid.MustParse("00000000-0000-0000-0000-000000000a02")
TagVIPID = uuid.MustParse("00000000-0000-0000-0000-000000000a03")
TagColdID = uuid.MustParse("00000000-0000-0000-0000-000000000a04")
CategoryLeadID = uuid.MustParse("00000000-0000-0000-0000-000000000a05")
CategoryChurnID = uuid.MustParse("00000000-0000-0000-0000-000000000a06")
// CRM (00000000-0000-0000-0000-000000000Bxx).
PipelineSalesID = uuid.MustParse("00000000-0000-0000-0000-000000000b01")
StageNewID = uuid.MustParse("00000000-0000-0000-0000-000000000b02")
StageQualID = uuid.MustParse("00000000-0000-0000-0000-000000000b03")
StageDemoID = uuid.MustParse("00000000-0000-0000-0000-000000000b04")
StageWonID = uuid.MustParse("00000000-0000-0000-0000-000000000b05")
StageLostID = uuid.MustParse("00000000-0000-0000-0000-000000000b06")
DealAcmeBigID = uuid.MustParse("00000000-0000-0000-0000-000000000b07")
DealAcmeWonID = uuid.MustParse("00000000-0000-0000-0000-000000000b08")
CRMTask1ID = uuid.MustParse("00000000-0000-0000-0000-000000000b09")
CRMTask2ID = uuid.MustParse("00000000-0000-0000-0000-000000000b0a")
// Reply templates (00000000-0000-0000-0000-000000000Cxx).
ReplyTemplateYesID = uuid.MustParse("00000000-0000-0000-0000-000000000c01")
ReplyTemplateNoID = uuid.MustParse("00000000-0000-0000-0000-000000000c02")
// Enterprise inquiry sample.
EnterpriseInquiryID = uuid.MustParse("00000000-0000-0000-0000-000000000d01")
)
// contactID derives a stable per-org contact UUID from a small sequence number.
func contactID(orgPrefix byte, n int) uuid.UUID {
return uuid.MustParse(
fmt.Sprintf("00000000-0000-0000-0000-0000000e%02x%02x", orgPrefix, n),
)
}
// duration UUIDs match migration 000015's seeded rows.
var (
DurationMonthID = uuid.MustParse("00000000-0000-0000-0000-0000000000d1")
DurationYearID = uuid.MustParse("00000000-0000-0000-0000-0000000000d2")
DurationLifetimeID = uuid.MustParse("00000000-0000-0000-0000-0000000000d3")
)