@chatman-media/storage 1.14.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -35,10 +35,15 @@ __export(exports_schema, {
35
35
  skillOutcomes: () => skillOutcomes,
36
36
  shadowEvaluations: () => shadowEvaluations,
37
37
  sessions: () => sessions,
38
+ serviceCatalogItems: () => serviceCatalogItems,
38
39
  selfPlayMatches: () => selfPlayMatches,
39
40
  referralCodes: () => referralCodes,
40
41
  questionnaireTokens: () => questionnaireTokens,
41
42
  passwordResets: () => passwordResets,
43
+ partners: () => partners,
44
+ partnerSettlements: () => partnerSettlements,
45
+ partnerServices: () => partnerServices,
46
+ partnerDeals: () => partnerDeals,
42
47
  pairwiseMatches: () => pairwiseMatches,
43
48
  outreachCampaigns: () => outreachCampaigns,
44
49
  outreachCampaignLeads: () => outreachCampaignLeads,
@@ -64,6 +69,7 @@ __export(exports_schema, {
64
69
  exchangeRates: () => exchangeRates,
65
70
  exchangeRateTiers: () => exchangeRateTiers,
66
71
  exchangeOrders: () => exchangeOrders,
72
+ earlyAccessSignups: () => earlyAccessSignups,
67
73
  directorHooks: () => directorHooks,
68
74
  conversations: () => conversations,
69
75
  contacts: () => contacts,
@@ -3233,6 +3239,25 @@ var referralCodes = pgTable("referral_codes", {
3233
3239
  uniqueIndex("uniq_referral_codes_code").on(t.code),
3234
3240
  index("idx_referral_codes_tenant").on(t.tenantId)
3235
3241
  ]);
3242
+ var earlyAccessSignups = pgTable("early_access_signups", {
3243
+ id: serial("id").primaryKey(),
3244
+ email: text("email").notNull(),
3245
+ name: text("name"),
3246
+ company: text("company"),
3247
+ useCase: text("use_case"),
3248
+ source: text("source").notNull().default("landing"),
3249
+ locale: text("locale").notNull().default("ru"),
3250
+ status: text("status").notNull().default("new"),
3251
+ userAgent: text("user_agent"),
3252
+ ip: text("ip"),
3253
+ metaJson: text("meta_json").notNull().default("{}"),
3254
+ createdAt: integer("created_at").notNull().default(epochNow()),
3255
+ updatedAt: integer("updated_at").notNull().default(epochNow())
3256
+ }, (t) => [
3257
+ uniqueIndex("uniq_early_access_email").on(t.email),
3258
+ index("idx_early_access_status_created").on(t.status, t.createdAt),
3259
+ index("idx_early_access_source").on(t.source)
3260
+ ]);
3236
3261
  var stageWebhooks = pgTable("stage_webhooks", {
3237
3262
  id: serial("id").primaryKey(),
3238
3263
  tenantId: integer("tenant_id").notNull().references(() => tenants.id, { onDelete: "cascade" }),
@@ -3458,6 +3483,112 @@ var exchangeOrders = pgTable("exchange_orders", {
3458
3483
  index("idx_exchange_orders_tenant_created").on(t.tenantId, t.createdAt),
3459
3484
  index("idx_exchange_orders_awaiting_ttl").on(t.status, t.rateExpiresAt).where(sql`status = 'awaiting_payment'`)
3460
3485
  ]);
3486
+ var partners = pgTable("partners", {
3487
+ id: serial("id").primaryKey(),
3488
+ tenantId: integer("tenant_id").notNull().references(() => tenants.id, { onDelete: "cascade" }),
3489
+ name: text("name").notNull(),
3490
+ status: text("status").notNull().default("active"),
3491
+ contactName: text("contact_name"),
3492
+ contactChannel: text("contact_channel"),
3493
+ contactValue: text("contact_value"),
3494
+ defaultCommissionPct: doublePrecision("default_commission_pct").notNull().default(0),
3495
+ settlementCurrency: text("settlement_currency").notNull().default("THB"),
3496
+ notes: text("notes"),
3497
+ createdAt: integer("created_at").notNull().default(epochNow()),
3498
+ updatedAt: integer("updated_at").notNull().default(epochNow())
3499
+ }, (t) => [
3500
+ check("partners_status_check", sql`${t.status} IN ('active','archived')`),
3501
+ index("idx_partners_tenant_status").on(t.tenantId, t.status)
3502
+ ]);
3503
+ var partnerServices = pgTable("partner_services", {
3504
+ id: serial("id").primaryKey(),
3505
+ tenantId: integer("tenant_id").notNull().references(() => tenants.id, { onDelete: "cascade" }),
3506
+ partnerId: integer("partner_id").notNull().references(() => partners.id, { onDelete: "cascade" }),
3507
+ name: text("name").notNull(),
3508
+ category: text("category"),
3509
+ funnelId: integer("funnel_id").references(() => funnels.id, { onDelete: "set null" }),
3510
+ stageDefinitionId: integer("stage_definition_id").references(() => stageDefinitions.id, { onDelete: "set null" }),
3511
+ commissionPct: doublePrecision("commission_pct").notNull().default(0),
3512
+ isActive: boolean("is_active").notNull().default(true),
3513
+ notes: text("notes"),
3514
+ createdAt: integer("created_at").notNull().default(epochNow()),
3515
+ updatedAt: integer("updated_at").notNull().default(epochNow())
3516
+ }, (t) => [
3517
+ uniqueIndex("uniq_partner_services_name").on(t.tenantId, t.partnerId, t.name),
3518
+ index("idx_partner_services_tenant_active").on(t.tenantId, t.isActive),
3519
+ index("idx_partner_services_stage").on(t.tenantId, t.stageDefinitionId)
3520
+ ]);
3521
+ var serviceCatalogItems = pgTable("service_catalog_items", {
3522
+ id: serial("id").primaryKey(),
3523
+ tenantId: integer("tenant_id").notNull().references(() => tenants.id, { onDelete: "cascade" }),
3524
+ slug: text("slug").notNull(),
3525
+ name: text("name").notNull(),
3526
+ category: text("category"),
3527
+ description: text("description"),
3528
+ routeType: text("route_type").notNull().default("manual"),
3529
+ funnelId: integer("funnel_id").references(() => funnels.id, { onDelete: "set null" }),
3530
+ partnerServiceId: integer("partner_service_id").references(() => partnerServices.id, { onDelete: "set null" }),
3531
+ webhookUrl: text("webhook_url"),
3532
+ isActive: boolean("is_active").notNull().default(true),
3533
+ sortOrder: integer("sort_order").notNull().default(0),
3534
+ metadataJson: text("metadata_json").notNull().default("{}"),
3535
+ createdAt: integer("created_at").notNull().default(epochNow()),
3536
+ updatedAt: integer("updated_at").notNull().default(epochNow())
3537
+ }, (t) => [
3538
+ check("service_catalog_route_type_check", sql`${t.routeType} IN ('manual','funnel','partner_service','webhook')`),
3539
+ uniqueIndex("uniq_service_catalog_slug").on(t.tenantId, t.slug),
3540
+ index("idx_service_catalog_tenant_active").on(t.tenantId, t.isActive, t.sortOrder),
3541
+ index("idx_service_catalog_funnel").on(t.tenantId, t.funnelId),
3542
+ index("idx_service_catalog_partner_service").on(t.tenantId, t.partnerServiceId)
3543
+ ]);
3544
+ var partnerDeals = pgTable("partner_deals", {
3545
+ id: serial("id").primaryKey(),
3546
+ tenantId: integer("tenant_id").notNull().references(() => tenants.id, { onDelete: "cascade" }),
3547
+ partnerId: integer("partner_id").references(() => partners.id, { onDelete: "set null" }),
3548
+ serviceId: integer("service_id").references(() => partnerServices.id, { onDelete: "set null" }),
3549
+ leadId: integer("lead_id").references(() => leads.id, { onDelete: "set null" }),
3550
+ stageDefinitionId: integer("stage_definition_id").references(() => stageDefinitions.id, { onDelete: "set null" }),
3551
+ status: text("status").notNull().default("sent"),
3552
+ handoffUrl: text("handoff_url"),
3553
+ handoffMode: text("handoff_mode").notNull().default("fire_and_forget"),
3554
+ grossAmount: doublePrecision("gross_amount"),
3555
+ currency: text("currency").notNull().default("THB"),
3556
+ commissionPct: doublePrecision("commission_pct").notNull().default(0),
3557
+ commissionAmount: doublePrecision("commission_amount"),
3558
+ proofJson: text("proof_json"),
3559
+ notes: text("notes"),
3560
+ sentAt: integer("sent_at"),
3561
+ acceptedAt: integer("accepted_at"),
3562
+ completedAt: integer("completed_at"),
3563
+ cancelledAt: integer("cancelled_at"),
3564
+ settledAt: integer("settled_at"),
3565
+ createdAt: integer("created_at").notNull().default(epochNow()),
3566
+ updatedAt: integer("updated_at").notNull().default(epochNow())
3567
+ }, (t) => [
3568
+ check("partner_deals_status_check", sql`${t.status} IN ('sent','accepted','rejected','completed','cancelled','disputed','settled')`),
3569
+ check("partner_deals_mode_check", sql`${t.handoffMode} IN ('fire_and_forget','await_callback')`),
3570
+ index("idx_partner_deals_tenant_status").on(t.tenantId, t.status),
3571
+ index("idx_partner_deals_partner").on(t.tenantId, t.partnerId),
3572
+ index("idx_partner_deals_lead").on(t.tenantId, t.leadId)
3573
+ ]);
3574
+ var partnerSettlements = pgTable("partner_settlements", {
3575
+ id: serial("id").primaryKey(),
3576
+ tenantId: integer("tenant_id").notNull().references(() => tenants.id, { onDelete: "cascade" }),
3577
+ partnerId: integer("partner_id").notNull().references(() => partners.id, { onDelete: "cascade" }),
3578
+ periodStart: integer("period_start").notNull(),
3579
+ periodEnd: integer("period_end").notNull(),
3580
+ status: text("status").notNull().default("draft"),
3581
+ totalGross: doublePrecision("total_gross").notNull().default(0),
3582
+ totalCommission: doublePrecision("total_commission").notNull().default(0),
3583
+ currency: text("currency").notNull().default("THB"),
3584
+ paidAt: integer("paid_at"),
3585
+ notes: text("notes"),
3586
+ createdAt: integer("created_at").notNull().default(epochNow()),
3587
+ updatedAt: integer("updated_at").notNull().default(epochNow())
3588
+ }, (t) => [
3589
+ check("partner_settlements_status_check", sql`${t.status} IN ('draft','issued','paid','cancelled')`),
3590
+ index("idx_partner_settlements_partner").on(t.tenantId, t.partnerId, t.periodStart)
3591
+ ]);
3461
3592
  // src/integration-helpers.ts
3462
3593
  import { readdirSync, readFileSync } from "node:fs";
3463
3594
  import { join } from "node:path";
@@ -5496,11 +5627,16 @@ export {
5496
5627
  skillOutcomes,
5497
5628
  shadowEvaluations,
5498
5629
  sessions,
5630
+ serviceCatalogItems,
5499
5631
  selfPlayMatches,
5500
5632
  exports_schema as schema,
5501
5633
  referralCodes,
5502
5634
  questionnaireTokens,
5503
5635
  passwordResets,
5636
+ partners,
5637
+ partnerSettlements,
5638
+ partnerServices,
5639
+ partnerDeals,
5504
5640
  pairwiseMatches,
5505
5641
  outreachCampaigns,
5506
5642
  outreachCampaignLeads,
@@ -5526,6 +5662,7 @@ export {
5526
5662
  exchangeRates,
5527
5663
  exchangeRateTiers,
5528
5664
  exchangeOrders,
5665
+ earlyAccessSignups,
5529
5666
  dropIsolatedDb,
5530
5667
  directorHooks,
5531
5668
  createIsolatedDb,