@absolutejs/commerce 0.12.0-beta.0 → 0.14.0-beta.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.
@@ -926,6 +926,23 @@ export declare const commerceOrders: import("drizzle-orm/pg-core").PgTableWithCo
926
926
  }, {}, {
927
927
  length: 600;
928
928
  }>;
929
+ pickup_at: import("drizzle-orm/pg-core").PgColumn<{
930
+ name: "pickup_at";
931
+ tableName: "orders";
932
+ dataType: "date";
933
+ columnType: "PgTimestamp";
934
+ data: Date;
935
+ driverParam: string;
936
+ notNull: false;
937
+ hasDefault: false;
938
+ isPrimaryKey: false;
939
+ isAutoincrement: false;
940
+ hasRuntimeDefault: false;
941
+ enumValues: undefined;
942
+ baseColumn: never;
943
+ identity: undefined;
944
+ generated: undefined;
945
+ }, {}, {}>;
929
946
  line_items: import("drizzle-orm/pg-core").PgColumn<{
930
947
  name: "line_items";
931
948
  tableName: "orders";
@@ -2082,6 +2099,104 @@ export declare const commerceGroupStores: import("drizzle-orm/pg-core").PgTableW
2082
2099
  };
2083
2100
  dialect: "pg";
2084
2101
  }>;
2102
+ export declare const commerceLoyalty: import("drizzle-orm/pg-core").PgTableWithColumns<{
2103
+ name: "loyalty";
2104
+ schema: undefined;
2105
+ columns: {
2106
+ created_at: import("drizzle-orm/pg-core").PgColumn<{
2107
+ name: "created_at";
2108
+ tableName: "loyalty";
2109
+ dataType: "date";
2110
+ columnType: "PgTimestamp";
2111
+ data: Date;
2112
+ driverParam: string;
2113
+ notNull: true;
2114
+ hasDefault: true;
2115
+ isPrimaryKey: false;
2116
+ isAutoincrement: false;
2117
+ hasRuntimeDefault: false;
2118
+ enumValues: undefined;
2119
+ baseColumn: never;
2120
+ identity: undefined;
2121
+ generated: undefined;
2122
+ }, {}, {}>;
2123
+ email: import("drizzle-orm/pg-core").PgColumn<{
2124
+ name: "email";
2125
+ tableName: "loyalty";
2126
+ dataType: "string";
2127
+ columnType: "PgVarchar";
2128
+ data: string;
2129
+ driverParam: string;
2130
+ notNull: true;
2131
+ hasDefault: false;
2132
+ isPrimaryKey: true;
2133
+ isAutoincrement: false;
2134
+ hasRuntimeDefault: false;
2135
+ enumValues: [string, ...string[]];
2136
+ baseColumn: never;
2137
+ identity: undefined;
2138
+ generated: undefined;
2139
+ }, {}, {
2140
+ length: 320;
2141
+ }>;
2142
+ points: import("drizzle-orm/pg-core").PgColumn<{
2143
+ name: "points";
2144
+ tableName: "loyalty";
2145
+ dataType: "number";
2146
+ columnType: "PgInteger";
2147
+ data: number;
2148
+ driverParam: string | number;
2149
+ notNull: true;
2150
+ hasDefault: true;
2151
+ isPrimaryKey: false;
2152
+ isAutoincrement: false;
2153
+ hasRuntimeDefault: false;
2154
+ enumValues: undefined;
2155
+ baseColumn: never;
2156
+ identity: undefined;
2157
+ generated: undefined;
2158
+ }, {}, {}>;
2159
+ referral_code: import("drizzle-orm/pg-core").PgColumn<{
2160
+ name: "referral_code";
2161
+ tableName: "loyalty";
2162
+ dataType: "string";
2163
+ columnType: "PgVarchar";
2164
+ data: string;
2165
+ driverParam: string;
2166
+ notNull: true;
2167
+ hasDefault: false;
2168
+ isPrimaryKey: false;
2169
+ isAutoincrement: false;
2170
+ hasRuntimeDefault: false;
2171
+ enumValues: [string, ...string[]];
2172
+ baseColumn: never;
2173
+ identity: undefined;
2174
+ generated: undefined;
2175
+ }, {}, {
2176
+ length: 20;
2177
+ }>;
2178
+ referred_by: import("drizzle-orm/pg-core").PgColumn<{
2179
+ name: "referred_by";
2180
+ tableName: "loyalty";
2181
+ dataType: "string";
2182
+ columnType: "PgVarchar";
2183
+ data: string;
2184
+ driverParam: string;
2185
+ notNull: false;
2186
+ hasDefault: false;
2187
+ isPrimaryKey: false;
2188
+ isAutoincrement: false;
2189
+ hasRuntimeDefault: false;
2190
+ enumValues: [string, ...string[]];
2191
+ baseColumn: never;
2192
+ identity: undefined;
2193
+ generated: undefined;
2194
+ }, {}, {
2195
+ length: 20;
2196
+ }>;
2197
+ };
2198
+ dialect: "pg";
2199
+ }>;
2085
2200
  export declare const commercePushSubscriptions: import("drizzle-orm/pg-core").PgTableWithColumns<{
2086
2201
  name: "push_subscriptions";
2087
2202
  schema: undefined;
@@ -4518,6 +4633,104 @@ export declare const commerceDrizzleSchema: {
4518
4633
  };
4519
4634
  dialect: "pg";
4520
4635
  }>;
4636
+ loyalty: import("drizzle-orm/pg-core").PgTableWithColumns<{
4637
+ name: "loyalty";
4638
+ schema: undefined;
4639
+ columns: {
4640
+ created_at: import("drizzle-orm/pg-core").PgColumn<{
4641
+ name: "created_at";
4642
+ tableName: "loyalty";
4643
+ dataType: "date";
4644
+ columnType: "PgTimestamp";
4645
+ data: Date;
4646
+ driverParam: string;
4647
+ notNull: true;
4648
+ hasDefault: true;
4649
+ isPrimaryKey: false;
4650
+ isAutoincrement: false;
4651
+ hasRuntimeDefault: false;
4652
+ enumValues: undefined;
4653
+ baseColumn: never;
4654
+ identity: undefined;
4655
+ generated: undefined;
4656
+ }, {}, {}>;
4657
+ email: import("drizzle-orm/pg-core").PgColumn<{
4658
+ name: "email";
4659
+ tableName: "loyalty";
4660
+ dataType: "string";
4661
+ columnType: "PgVarchar";
4662
+ data: string;
4663
+ driverParam: string;
4664
+ notNull: true;
4665
+ hasDefault: false;
4666
+ isPrimaryKey: true;
4667
+ isAutoincrement: false;
4668
+ hasRuntimeDefault: false;
4669
+ enumValues: [string, ...string[]];
4670
+ baseColumn: never;
4671
+ identity: undefined;
4672
+ generated: undefined;
4673
+ }, {}, {
4674
+ length: 320;
4675
+ }>;
4676
+ points: import("drizzle-orm/pg-core").PgColumn<{
4677
+ name: "points";
4678
+ tableName: "loyalty";
4679
+ dataType: "number";
4680
+ columnType: "PgInteger";
4681
+ data: number;
4682
+ driverParam: string | number;
4683
+ notNull: true;
4684
+ hasDefault: true;
4685
+ isPrimaryKey: false;
4686
+ isAutoincrement: false;
4687
+ hasRuntimeDefault: false;
4688
+ enumValues: undefined;
4689
+ baseColumn: never;
4690
+ identity: undefined;
4691
+ generated: undefined;
4692
+ }, {}, {}>;
4693
+ referral_code: import("drizzle-orm/pg-core").PgColumn<{
4694
+ name: "referral_code";
4695
+ tableName: "loyalty";
4696
+ dataType: "string";
4697
+ columnType: "PgVarchar";
4698
+ data: string;
4699
+ driverParam: string;
4700
+ notNull: true;
4701
+ hasDefault: false;
4702
+ isPrimaryKey: false;
4703
+ isAutoincrement: false;
4704
+ hasRuntimeDefault: false;
4705
+ enumValues: [string, ...string[]];
4706
+ baseColumn: never;
4707
+ identity: undefined;
4708
+ generated: undefined;
4709
+ }, {}, {
4710
+ length: 20;
4711
+ }>;
4712
+ referred_by: import("drizzle-orm/pg-core").PgColumn<{
4713
+ name: "referred_by";
4714
+ tableName: "loyalty";
4715
+ dataType: "string";
4716
+ columnType: "PgVarchar";
4717
+ data: string;
4718
+ driverParam: string;
4719
+ notNull: false;
4720
+ hasDefault: false;
4721
+ isPrimaryKey: false;
4722
+ isAutoincrement: false;
4723
+ hasRuntimeDefault: false;
4724
+ enumValues: [string, ...string[]];
4725
+ baseColumn: never;
4726
+ identity: undefined;
4727
+ generated: undefined;
4728
+ }, {}, {
4729
+ length: 20;
4730
+ }>;
4731
+ };
4732
+ dialect: "pg";
4733
+ }>;
4521
4734
  orders: import("drizzle-orm/pg-core").PgTableWithColumns<{
4522
4735
  name: "orders";
4523
4736
  schema: undefined;
@@ -4761,6 +4974,23 @@ export declare const commerceDrizzleSchema: {
4761
4974
  }, {}, {
4762
4975
  length: 600;
4763
4976
  }>;
4977
+ pickup_at: import("drizzle-orm/pg-core").PgColumn<{
4978
+ name: "pickup_at";
4979
+ tableName: "orders";
4980
+ dataType: "date";
4981
+ columnType: "PgTimestamp";
4982
+ data: Date;
4983
+ driverParam: string;
4984
+ notNull: false;
4985
+ hasDefault: false;
4986
+ isPrimaryKey: false;
4987
+ isAutoincrement: false;
4988
+ hasRuntimeDefault: false;
4989
+ enumValues: undefined;
4990
+ baseColumn: never;
4991
+ identity: undefined;
4992
+ generated: undefined;
4993
+ }, {}, {}>;
4764
4994
  line_items: import("drizzle-orm/pg-core").PgColumn<{
4765
4995
  name: "line_items";
4766
4996
  tableName: "orders";
@@ -110,6 +110,33 @@ var setInvoiceStatus = async (db, id, status) => {
110
110
  const [updated] = await db.update(commerceInvoices).set({ status }).where(eq(commerceInvoices.id, id)).returning();
111
111
  return updated;
112
112
  };
113
+ var ensureLoyalty = async (db, email, referralCode) => {
114
+ const [row] = await db.insert(commerceLoyalty).values({ email, referral_code: referralCode }).onConflictDoNothing({ target: commerceLoyalty.email }).returning();
115
+ if (row)
116
+ return row;
117
+ const [existing] = await db.select().from(commerceLoyalty).where(eq(commerceLoyalty.email, email)).limit(1);
118
+ return existing;
119
+ };
120
+ var getLoyalty = async (db, email) => {
121
+ const [row] = await db.select().from(commerceLoyalty).where(eq(commerceLoyalty.email, email)).limit(1);
122
+ return row ?? null;
123
+ };
124
+ var getLoyaltyByReferralCode = async (db, code) => {
125
+ const [row] = await db.select().from(commerceLoyalty).where(eq(commerceLoyalty.referral_code, code)).limit(1);
126
+ return row ?? null;
127
+ };
128
+ var addLoyaltyPoints = async (db, email, points) => {
129
+ const [row] = await db.update(commerceLoyalty).set({ points: sql`${commerceLoyalty.points} + ${points}` }).where(eq(commerceLoyalty.email, email)).returning();
130
+ return row;
131
+ };
132
+ var spendLoyaltyPoints = async (db, email, points) => {
133
+ const [row] = await db.update(commerceLoyalty).set({ points: sql`GREATEST(${commerceLoyalty.points} - ${points}, 0)` }).where(eq(commerceLoyalty.email, email)).returning();
134
+ return row;
135
+ };
136
+ var setReferredBy = async (db, email, code) => {
137
+ const [row] = await db.update(commerceLoyalty).set({ referred_by: code }).where(eq(commerceLoyalty.email, email)).returning();
138
+ return row;
139
+ };
113
140
  var savePushSubscription = async (db, sub) => {
114
141
  const [saved] = await db.insert(commercePushSubscriptions).values(sub).onConflictDoUpdate({
115
142
  set: { auth: sub.auth, email: sub.email, p256dh: sub.p256dh, role: sub.role },
@@ -255,6 +282,7 @@ var commerceOrders = pgTable("orders", {
255
282
  due_date: timestamp(),
256
283
  fulfillment: varchar({ length: 20 }),
257
284
  label_url: varchar({ length: 600 }),
285
+ pickup_at: timestamp(),
258
286
  line_items: jsonb().$type().default([]),
259
287
  payment_status: varchar({ length: 50 }),
260
288
  production_stage: varchar({ length: 20 }),
@@ -328,6 +356,13 @@ var commerceGroupStores = pgTable("group_stores", {
328
356
  product_id: varchar({ length: 40 }).notNull(),
329
357
  slug: varchar({ length: 80 }).notNull().unique()
330
358
  });
359
+ var commerceLoyalty = pgTable("loyalty", {
360
+ created_at: timestamp().notNull().defaultNow(),
361
+ email: varchar({ length: 320 }).primaryKey(),
362
+ points: integer().notNull().default(0),
363
+ referral_code: varchar({ length: 20 }).notNull().unique(),
364
+ referred_by: varchar({ length: 20 })
365
+ });
331
366
  var commercePushSubscriptions = pgTable("push_subscriptions", {
332
367
  auth: varchar({ length: 255 }).notNull(),
333
368
  created_at: timestamp().notNull().defaultNow(),
@@ -403,6 +438,7 @@ var commerceDrizzleSchema = {
403
438
  groupOrders: commerceGroupOrders,
404
439
  groupStores: commerceGroupStores,
405
440
  inventory: commerceInventory,
441
+ loyalty: commerceLoyalty,
406
442
  orders: commerceOrders,
407
443
  pushSubscriptions: commercePushSubscriptions,
408
444
  quotes: commerceQuotes,
@@ -415,8 +451,10 @@ export {
415
451
  updateCompany,
416
452
  toggleFavorite,
417
453
  subscribe,
454
+ spendLoyaltyPoints,
418
455
  setReviewStatus,
419
456
  setReturnStatus,
457
+ setReferredBy,
420
458
  setInvoiceStatus,
421
459
  setInventoryQuantity,
422
460
  savePushSubscription,
@@ -444,12 +482,15 @@ export {
444
482
  listApprovedReviews,
445
483
  listAllReviews,
446
484
  issueGiftCard,
485
+ getLoyaltyByReferralCode,
486
+ getLoyalty,
447
487
  getInvoiceByOrder,
448
488
  getInvoice,
449
489
  getGroupStoreBySlug,
450
490
  getGiftCard,
451
491
  getCompany,
452
492
  findOrderForTracking,
493
+ ensureLoyalty,
453
494
  dueForReminder,
454
495
  deleteSavedDesign,
455
496
  deletePushSubscription,
@@ -468,6 +509,7 @@ export {
468
509
  commerceQuotes,
469
510
  commercePushSubscriptions,
470
511
  commerceOrders,
512
+ commerceLoyalty,
471
513
  commerceInvoices,
472
514
  commerceInventory,
473
515
  commerceGroupStores,
@@ -480,5 +522,6 @@ export {
480
522
  commerceDesigns,
481
523
  commerceCompanies,
482
524
  commerceAbandonedCarts,
525
+ addLoyaltyPoints,
483
526
  addInventoryItem
484
527
  };
@@ -1,5 +1,5 @@
1
1
  import type { PgDatabase } from 'drizzle-orm/pg-core';
2
- import { commerceCompanies, commerceFavorites, commerceGalleryItems, commerceGiftCards, commerceGroupStores, commerceInventory, commerceInvoices, commercePushSubscriptions, commerceReturnRequests, commerceReviews, commerceSavedDesigns } from './index';
2
+ import { commerceCompanies, commerceFavorites, commerceGalleryItems, commerceGiftCards, commerceGroupStores, commerceInventory, commerceInvoices, commerceLoyalty, commercePushSubscriptions, commerceReturnRequests, commerceReviews, commerceSavedDesigns } from './index';
3
3
  export type CommerceDb = PgDatabase<any, any, any>;
4
4
  export type Review = typeof commerceReviews.$inferSelect;
5
5
  export type NewReview = typeof commerceReviews.$inferInsert;
@@ -19,6 +19,8 @@ export type Company = typeof commerceCompanies.$inferSelect;
19
19
  export type NewCompany = typeof commerceCompanies.$inferInsert;
20
20
  export type PushSubscription = typeof commercePushSubscriptions.$inferSelect;
21
21
  export type NewPushSubscription = typeof commercePushSubscriptions.$inferInsert;
22
+ export type Loyalty = typeof commerceLoyalty.$inferSelect;
23
+ export type NewLoyalty = typeof commerceLoyalty.$inferInsert;
22
24
  export type Invoice = typeof commerceInvoices.$inferSelect;
23
25
  export type NewInvoice = typeof commerceInvoices.$inferInsert;
24
26
  export type GiftCardRedemption = {
@@ -1947,6 +1949,48 @@ export declare const setInvoiceStatus: (db: CommerceDb, id: string, status: stri
1947
1949
  status: string;
1948
1950
  tax_exempt: boolean;
1949
1951
  } | undefined>;
1952
+ export declare const ensureLoyalty: (db: CommerceDb, email: string, referralCode: string) => Promise<{
1953
+ email: string;
1954
+ created_at: Date;
1955
+ points: number;
1956
+ referral_code: string;
1957
+ referred_by: string | null;
1958
+ } | undefined>;
1959
+ export declare const getLoyalty: (db: CommerceDb, email: string) => Promise<{
1960
+ created_at: Date;
1961
+ email: string;
1962
+ points: number;
1963
+ referral_code: string;
1964
+ referred_by: string | null;
1965
+ } | null>;
1966
+ export declare const getLoyaltyByReferralCode: (db: CommerceDb, code: string) => Promise<{
1967
+ created_at: Date;
1968
+ email: string;
1969
+ points: number;
1970
+ referral_code: string;
1971
+ referred_by: string | null;
1972
+ } | null>;
1973
+ export declare const addLoyaltyPoints: (db: CommerceDb, email: string, points: number) => Promise<{
1974
+ created_at: Date;
1975
+ email: string;
1976
+ points: number;
1977
+ referral_code: string;
1978
+ referred_by: string | null;
1979
+ } | undefined>;
1980
+ export declare const spendLoyaltyPoints: (db: CommerceDb, email: string, points: number) => Promise<{
1981
+ created_at: Date;
1982
+ email: string;
1983
+ points: number;
1984
+ referral_code: string;
1985
+ referred_by: string | null;
1986
+ } | undefined>;
1987
+ export declare const setReferredBy: (db: CommerceDb, email: string, code: string) => Promise<{
1988
+ created_at: Date;
1989
+ email: string;
1990
+ points: number;
1991
+ referral_code: string;
1992
+ referred_by: string | null;
1993
+ } | undefined>;
1950
1994
  export declare const savePushSubscription: (db: CommerceDb, sub: NewPushSubscription) => Promise<{
1951
1995
  email: string | null;
1952
1996
  created_at: Date;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/commerce",
3
- "version": "0.12.0-beta.0",
3
+ "version": "0.14.0-beta.0",
4
4
  "description": "Provider-agnostic commerce primitives (cart, orders, fulfillment, shipping) for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",