@revojs/billing 0.2.45 → 0.2.46

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.
@@ -0,0 +1,131 @@
1
+ import { type InferInsertModel, type InferSelectModel } from "@revojs/storage";
2
+ import type { Scope } from "revojs";
3
+ import type { BillingStorage, SubscriptionStatus } from "../index";
4
+ export type Customer = InferSelectModel<typeof customers>;
5
+ export type Subscription = InferSelectModel<typeof subscriptions>;
6
+ export type CustomerInsert = InferInsertModel<typeof customers>;
7
+ export type SubscriptionInsert = InferInsertModel<typeof subscriptions>;
8
+ export declare function useBillingStorage(scope: Scope, database?: import("@revojs/storage").Database<{
9
+ customers: import("@revojs/storage/protocols/mysql").MysqlTable<"Customers", {
10
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
11
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
12
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
13
+ reference: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
14
+ email: import("@revojs/storage/protocols/mysql").TextColumn & Record<"notNull", never>;
15
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
16
+ }> & {
17
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
18
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
19
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
20
+ reference: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
21
+ email: import("@revojs/storage/protocols/mysql").TextColumn & Record<"notNull", never>;
22
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
23
+ };
24
+ subscriptions: import("@revojs/storage/protocols/mysql").MysqlTable<"Subscriptions", {
25
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
26
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
27
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
28
+ status: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
29
+ price: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
30
+ quantity: import("@revojs/storage/protocols/mysql").IntColumn & Record<"notNull", never>;
31
+ currentPeriodEnd: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never>;
32
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/mysql").BooleanColumn & Record<"notNull", never>;
33
+ updatedAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
34
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
35
+ customerId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"references", never>;
36
+ }> & {
37
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
38
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
39
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
40
+ status: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
41
+ price: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
42
+ quantity: import("@revojs/storage/protocols/mysql").IntColumn & Record<"notNull", never>;
43
+ currentPeriodEnd: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never>;
44
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/mysql").BooleanColumn & Record<"notNull", never>;
45
+ updatedAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
46
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
47
+ customerId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"references", never>;
48
+ };
49
+ }>): BillingStorage;
50
+ export declare const customers: import("@revojs/storage/protocols/mysql").MysqlTable<"Customers", {
51
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
52
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
53
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
54
+ reference: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
55
+ email: import("@revojs/storage/protocols/mysql").TextColumn & Record<"notNull", never>;
56
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
57
+ }> & {
58
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
59
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
60
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
61
+ reference: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
62
+ email: import("@revojs/storage/protocols/mysql").TextColumn & Record<"notNull", never>;
63
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
64
+ };
65
+ export declare const subscriptions: import("@revojs/storage/protocols/mysql").MysqlTable<"Subscriptions", {
66
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
67
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
68
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
69
+ status: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
70
+ price: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
71
+ quantity: import("@revojs/storage/protocols/mysql").IntColumn & Record<"notNull", never>;
72
+ currentPeriodEnd: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never>;
73
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/mysql").BooleanColumn & Record<"notNull", never>;
74
+ updatedAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
75
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
76
+ customerId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"references", never>;
77
+ }> & {
78
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
79
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
80
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
81
+ status: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
82
+ price: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
83
+ quantity: import("@revojs/storage/protocols/mysql").IntColumn & Record<"notNull", never>;
84
+ currentPeriodEnd: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never>;
85
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/mysql").BooleanColumn & Record<"notNull", never>;
86
+ updatedAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
87
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
88
+ customerId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"references", never>;
89
+ };
90
+ export declare const billingSchema: {
91
+ customers: import("@revojs/storage/protocols/mysql").MysqlTable<"Customers", {
92
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
93
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
94
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
95
+ reference: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
96
+ email: import("@revojs/storage/protocols/mysql").TextColumn & Record<"notNull", never>;
97
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
98
+ }> & {
99
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
100
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
101
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
102
+ reference: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
103
+ email: import("@revojs/storage/protocols/mysql").TextColumn & Record<"notNull", never>;
104
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
105
+ };
106
+ subscriptions: import("@revojs/storage/protocols/mysql").MysqlTable<"Subscriptions", {
107
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
108
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
109
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
110
+ status: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
111
+ price: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
112
+ quantity: import("@revojs/storage/protocols/mysql").IntColumn & Record<"notNull", never>;
113
+ currentPeriodEnd: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never>;
114
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/mysql").BooleanColumn & Record<"notNull", never>;
115
+ updatedAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
116
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
117
+ customerId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"references", never>;
118
+ }> & {
119
+ id: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"primaryKey", never> & Record<"default", never>;
120
+ provider: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
121
+ externalId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
122
+ status: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
123
+ price: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never>;
124
+ quantity: import("@revojs/storage/protocols/mysql").IntColumn & Record<"notNull", never>;
125
+ currentPeriodEnd: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never>;
126
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/mysql").BooleanColumn & Record<"notNull", never>;
127
+ updatedAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
128
+ createdAt: import("@revojs/storage/protocols/mysql").DatetimeColumn & Record<"notNull", never> & Record<"default", never>;
129
+ customerId: import("@revojs/storage/protocols/mysql").VarcharColumn & Record<"notNull", never> & Record<"references", never>;
130
+ };
131
+ };
@@ -0,0 +1,59 @@
1
+ import { and, asc, equals, useReferenceStorage } from "@revojs/storage";
2
+ import { boolean, datetime, index, int, table, text, unique, varchar } from "@revojs/storage/protocols/mysql";
3
+ //#region src/storage/mysql.ts
4
+ function useBillingStorage(scope, database = useReferenceStorage(scope, billingSchema)) {
5
+ const schema = database.$schema;
6
+ return {
7
+ async getCustomerByReference(provider, reference) {
8
+ return database.select(schema.customers).from(schema.customers).where(and(equals(schema.customers.provider, provider), equals(schema.customers.reference, reference))).first();
9
+ },
10
+ async getCustomerByExternalId(provider, externalId) {
11
+ return database.select(schema.customers).from(schema.customers).where(and(equals(schema.customers.provider, provider), equals(schema.customers.externalId, externalId))).first();
12
+ },
13
+ async createCustomer(customer) {
14
+ await database.insert(schema.customers).values(customer).run();
15
+ },
16
+ async getSubscriptionByExternalId(provider, externalId) {
17
+ return database.select(schema.subscriptions).from(schema.subscriptions).where(and(equals(schema.subscriptions.provider, provider), equals(schema.subscriptions.externalId, externalId))).first();
18
+ },
19
+ async getSubscriptions(customerId) {
20
+ return database.select(schema.subscriptions).from(schema.subscriptions).where(equals(schema.subscriptions.customerId, customerId)).orderBy(asc(schema.subscriptions.createdAt), asc(schema.subscriptions.id));
21
+ },
22
+ async createSubscription(subscription) {
23
+ await database.insert(schema.subscriptions).values(subscription).run();
24
+ },
25
+ async updateSubscription(id, values) {
26
+ await database.update(schema.subscriptions).set({
27
+ ...values,
28
+ updatedAt: /* @__PURE__ */ new Date()
29
+ }).where(equals(schema.subscriptions.id, id)).run();
30
+ }
31
+ };
32
+ }
33
+ var customers = table("Customers", {
34
+ id: varchar("Id", { length: 36 }).primaryKey().default(() => crypto.randomUUID()),
35
+ provider: varchar("Provider", { length: 64 }).notNull(),
36
+ externalId: varchar("ExternalId", { length: 255 }).notNull(),
37
+ reference: varchar("Reference", { length: 255 }).notNull(),
38
+ email: text("Email").notNull(),
39
+ createdAt: datetime("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date())
40
+ }, (columns) => [unique(columns.provider, columns.externalId), unique(columns.provider, columns.reference)]);
41
+ var subscriptions = table("Subscriptions", {
42
+ id: varchar("Id", { length: 36 }).primaryKey().default(() => crypto.randomUUID()),
43
+ provider: varchar("Provider", { length: 64 }).notNull(),
44
+ externalId: varchar("ExternalId", { length: 255 }).notNull(),
45
+ status: varchar("Status", { length: 32 }).notNull().type(),
46
+ price: varchar("Price", { length: 255 }).notNull(),
47
+ quantity: int("Quantity").notNull(),
48
+ currentPeriodEnd: datetime("CurrentPeriodEnd").notNull(),
49
+ cancelAtPeriodEnd: boolean("CancelAtPeriodEnd").notNull(),
50
+ updatedAt: datetime("UpdatedAt").notNull().default(() => /* @__PURE__ */ new Date()),
51
+ createdAt: datetime("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date()),
52
+ customerId: varchar("CustomerId", { length: 36 }).notNull().references(() => customers.id, { onDelete: "cascade" })
53
+ }, (columns) => [unique(columns.provider, columns.externalId), index(columns.customerId)]);
54
+ var billingSchema = {
55
+ customers,
56
+ subscriptions
57
+ };
58
+ //#endregion
59
+ export { billingSchema, customers, subscriptions, useBillingStorage };
@@ -0,0 +1,131 @@
1
+ import { type InferInsertModel, type InferSelectModel } from "@revojs/storage";
2
+ import type { Scope } from "revojs";
3
+ import type { BillingStorage, SubscriptionStatus } from "../index";
4
+ export type Customer = InferSelectModel<typeof customers>;
5
+ export type Subscription = InferSelectModel<typeof subscriptions>;
6
+ export type CustomerInsert = InferInsertModel<typeof customers>;
7
+ export type SubscriptionInsert = InferInsertModel<typeof subscriptions>;
8
+ export declare function useBillingStorage(scope: Scope, database?: import("@revojs/storage").Database<{
9
+ customers: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Customers", {
10
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
11
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
12
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
13
+ reference: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
14
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
15
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
16
+ }> & {
17
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
18
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
19
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
20
+ reference: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
21
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
22
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
23
+ };
24
+ subscriptions: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Subscriptions", {
25
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
26
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
27
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
28
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
29
+ price: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
30
+ quantity: import("@revojs/storage/protocols/postgresql").IntegerColumn & Record<"notNull", never>;
31
+ currentPeriodEnd: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never>;
32
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/postgresql").BooleanColumn & Record<"notNull", never>;
33
+ updatedAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
34
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
35
+ customerId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
36
+ }> & {
37
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
38
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
39
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
40
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
41
+ price: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
42
+ quantity: import("@revojs/storage/protocols/postgresql").IntegerColumn & Record<"notNull", never>;
43
+ currentPeriodEnd: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never>;
44
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/postgresql").BooleanColumn & Record<"notNull", never>;
45
+ updatedAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
46
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
47
+ customerId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
48
+ };
49
+ }>): BillingStorage;
50
+ export declare const customers: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Customers", {
51
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
52
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
53
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
54
+ reference: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
55
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
56
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
57
+ }> & {
58
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
59
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
60
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
61
+ reference: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
62
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
63
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
64
+ };
65
+ export declare const subscriptions: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Subscriptions", {
66
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
67
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
68
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
69
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
70
+ price: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
71
+ quantity: import("@revojs/storage/protocols/postgresql").IntegerColumn & Record<"notNull", never>;
72
+ currentPeriodEnd: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never>;
73
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/postgresql").BooleanColumn & Record<"notNull", never>;
74
+ updatedAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
75
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
76
+ customerId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
77
+ }> & {
78
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
79
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
80
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
81
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
82
+ price: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
83
+ quantity: import("@revojs/storage/protocols/postgresql").IntegerColumn & Record<"notNull", never>;
84
+ currentPeriodEnd: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never>;
85
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/postgresql").BooleanColumn & Record<"notNull", never>;
86
+ updatedAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
87
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
88
+ customerId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
89
+ };
90
+ export declare const billingSchema: {
91
+ customers: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Customers", {
92
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
93
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
94
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
95
+ reference: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
96
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
97
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
98
+ }> & {
99
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
100
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
101
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
102
+ reference: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
103
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
104
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
105
+ };
106
+ subscriptions: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Subscriptions", {
107
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
108
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
109
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
110
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
111
+ price: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
112
+ quantity: import("@revojs/storage/protocols/postgresql").IntegerColumn & Record<"notNull", never>;
113
+ currentPeriodEnd: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never>;
114
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/postgresql").BooleanColumn & Record<"notNull", never>;
115
+ updatedAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
116
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
117
+ customerId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
118
+ }> & {
119
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
120
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
121
+ externalId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
122
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
123
+ price: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
124
+ quantity: import("@revojs/storage/protocols/postgresql").IntegerColumn & Record<"notNull", never>;
125
+ currentPeriodEnd: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never>;
126
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/postgresql").BooleanColumn & Record<"notNull", never>;
127
+ updatedAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
128
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
129
+ customerId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
130
+ };
131
+ };
@@ -0,0 +1,59 @@
1
+ import { and, asc, equals, useReferenceStorage } from "@revojs/storage";
2
+ import { boolean, index, integer, table, text, timestamp, unique, uuid } from "@revojs/storage/protocols/postgresql";
3
+ //#region src/storage/postgresql.ts
4
+ function useBillingStorage(scope, database = useReferenceStorage(scope, billingSchema)) {
5
+ const schema = database.$schema;
6
+ return {
7
+ async getCustomerByReference(provider, reference) {
8
+ return database.select(schema.customers).from(schema.customers).where(and(equals(schema.customers.provider, provider), equals(schema.customers.reference, reference))).first();
9
+ },
10
+ async getCustomerByExternalId(provider, externalId) {
11
+ return database.select(schema.customers).from(schema.customers).where(and(equals(schema.customers.provider, provider), equals(schema.customers.externalId, externalId))).first();
12
+ },
13
+ async createCustomer(customer) {
14
+ await database.insert(schema.customers).values(customer).run();
15
+ },
16
+ async getSubscriptionByExternalId(provider, externalId) {
17
+ return database.select(schema.subscriptions).from(schema.subscriptions).where(and(equals(schema.subscriptions.provider, provider), equals(schema.subscriptions.externalId, externalId))).first();
18
+ },
19
+ async getSubscriptions(customerId) {
20
+ return database.select(schema.subscriptions).from(schema.subscriptions).where(equals(schema.subscriptions.customerId, customerId)).orderBy(asc(schema.subscriptions.createdAt), asc(schema.subscriptions.id));
21
+ },
22
+ async createSubscription(subscription) {
23
+ await database.insert(schema.subscriptions).values(subscription).run();
24
+ },
25
+ async updateSubscription(id, values) {
26
+ await database.update(schema.subscriptions).set({
27
+ ...values,
28
+ updatedAt: /* @__PURE__ */ new Date()
29
+ }).where(equals(schema.subscriptions.id, id)).run();
30
+ }
31
+ };
32
+ }
33
+ var customers = table("Customers", {
34
+ id: uuid("Id").primaryKey().default(() => crypto.randomUUID()),
35
+ provider: text("Provider").notNull(),
36
+ externalId: text("ExternalId").notNull(),
37
+ reference: text("Reference").notNull(),
38
+ email: text("Email").notNull(),
39
+ createdAt: timestamp("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date())
40
+ }, (columns) => [unique(columns.provider, columns.externalId), unique(columns.provider, columns.reference)]);
41
+ var subscriptions = table("Subscriptions", {
42
+ id: uuid("Id").primaryKey().default(() => crypto.randomUUID()),
43
+ provider: text("Provider").notNull(),
44
+ externalId: text("ExternalId").notNull(),
45
+ status: text("Status").notNull().type(),
46
+ price: text("Price").notNull(),
47
+ quantity: integer("Quantity").notNull(),
48
+ currentPeriodEnd: timestamp("CurrentPeriodEnd").notNull(),
49
+ cancelAtPeriodEnd: boolean("CancelAtPeriodEnd").notNull(),
50
+ updatedAt: timestamp("UpdatedAt").notNull().default(() => /* @__PURE__ */ new Date()),
51
+ createdAt: timestamp("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date()),
52
+ customerId: uuid("CustomerId").notNull().references(() => customers.id, { onDelete: "cascade" })
53
+ }, (columns) => [unique(columns.provider, columns.externalId), index(columns.customerId)]);
54
+ var billingSchema = {
55
+ customers,
56
+ subscriptions
57
+ };
58
+ //#endregion
59
+ export { billingSchema, customers, subscriptions, useBillingStorage };
@@ -0,0 +1,131 @@
1
+ import { type InferInsertModel, type InferSelectModel } from "@revojs/storage";
2
+ import type { Scope } from "revojs";
3
+ import type { BillingStorage, SubscriptionStatus } from "../index";
4
+ export type Customer = InferSelectModel<typeof customers>;
5
+ export type Subscription = InferSelectModel<typeof subscriptions>;
6
+ export type CustomerInsert = InferInsertModel<typeof customers>;
7
+ export type SubscriptionInsert = InferInsertModel<typeof subscriptions>;
8
+ export declare function useBillingStorage(scope: Scope, database?: import("@revojs/storage").Database<{
9
+ customers: import("@revojs/storage/protocols/sqlite").SqliteTable<"Customers", {
10
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
11
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
12
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
13
+ reference: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
14
+ email: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
15
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
16
+ }> & {
17
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
18
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
19
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
20
+ reference: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
21
+ email: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
22
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
23
+ };
24
+ subscriptions: import("@revojs/storage/protocols/sqlite").SqliteTable<"Subscriptions", {
25
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
26
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
27
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
28
+ status: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
29
+ price: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
30
+ quantity: import("@revojs/storage/protocols/sqlite").IntegerColumn<"number"> & Record<"notNull", never>;
31
+ currentPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never>;
32
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"boolean"> & Record<"notNull", never>;
33
+ updatedAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
34
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
35
+ customerId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"references", never>;
36
+ }> & {
37
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
38
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
39
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
40
+ status: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
41
+ price: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
42
+ quantity: import("@revojs/storage/protocols/sqlite").IntegerColumn<"number"> & Record<"notNull", never>;
43
+ currentPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never>;
44
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"boolean"> & Record<"notNull", never>;
45
+ updatedAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
46
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
47
+ customerId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"references", never>;
48
+ };
49
+ }>): BillingStorage;
50
+ export declare const customers: import("@revojs/storage/protocols/sqlite").SqliteTable<"Customers", {
51
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
52
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
53
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
54
+ reference: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
55
+ email: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
56
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
57
+ }> & {
58
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
59
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
60
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
61
+ reference: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
62
+ email: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
63
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
64
+ };
65
+ export declare const subscriptions: import("@revojs/storage/protocols/sqlite").SqliteTable<"Subscriptions", {
66
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
67
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
68
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
69
+ status: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
70
+ price: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
71
+ quantity: import("@revojs/storage/protocols/sqlite").IntegerColumn<"number"> & Record<"notNull", never>;
72
+ currentPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never>;
73
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"boolean"> & Record<"notNull", never>;
74
+ updatedAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
75
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
76
+ customerId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"references", never>;
77
+ }> & {
78
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
79
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
80
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
81
+ status: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
82
+ price: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
83
+ quantity: import("@revojs/storage/protocols/sqlite").IntegerColumn<"number"> & Record<"notNull", never>;
84
+ currentPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never>;
85
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"boolean"> & Record<"notNull", never>;
86
+ updatedAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
87
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
88
+ customerId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"references", never>;
89
+ };
90
+ export declare const billingSchema: {
91
+ customers: import("@revojs/storage/protocols/sqlite").SqliteTable<"Customers", {
92
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
93
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
94
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
95
+ reference: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
96
+ email: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
97
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
98
+ }> & {
99
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
100
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
101
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
102
+ reference: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
103
+ email: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
104
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
105
+ };
106
+ subscriptions: import("@revojs/storage/protocols/sqlite").SqliteTable<"Subscriptions", {
107
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
108
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
109
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
110
+ status: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
111
+ price: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
112
+ quantity: import("@revojs/storage/protocols/sqlite").IntegerColumn<"number"> & Record<"notNull", never>;
113
+ currentPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never>;
114
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"boolean"> & Record<"notNull", never>;
115
+ updatedAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
116
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
117
+ customerId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"references", never>;
118
+ }> & {
119
+ id: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"primaryKey", never> & Record<"default", never>;
120
+ provider: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
121
+ externalId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
122
+ status: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"$type", SubscriptionStatus>;
123
+ price: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never>;
124
+ quantity: import("@revojs/storage/protocols/sqlite").IntegerColumn<"number"> & Record<"notNull", never>;
125
+ currentPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never>;
126
+ cancelAtPeriodEnd: import("@revojs/storage/protocols/sqlite").IntegerColumn<"boolean"> & Record<"notNull", never>;
127
+ updatedAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
128
+ createdAt: import("@revojs/storage/protocols/sqlite").IntegerColumn<"timestamp_ms"> & Record<"notNull", never> & Record<"default", never>;
129
+ customerId: import("@revojs/storage/protocols/sqlite").TextColumn<"text"> & Record<"notNull", never> & Record<"references", never>;
130
+ };
131
+ };