summaryrefslogtreecommitdiffhomepage
path: root/packages/console/core/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/console/core/src')
-rw-r--r--packages/console/core/src/black.ts6
-rw-r--r--packages/console/core/src/identifier.ts1
-rw-r--r--packages/console/core/src/schema/billing.sql.ts14
-rw-r--r--packages/console/core/src/schema/user.sql.ts6
-rw-r--r--packages/console/core/src/util/date.ts9
5 files changed, 27 insertions, 9 deletions
diff --git a/packages/console/core/src/black.ts b/packages/console/core/src/black.ts
index a4c44aea5..0ecbc94a4 100644
--- a/packages/console/core/src/black.ts
+++ b/packages/console/core/src/black.ts
@@ -4,9 +4,9 @@ import { Resource } from "@opencode-ai/console-resource"
export namespace BlackData {
const Schema = z.object({
- monthlyLimit: z.number().int(),
- intervalLimit: z.number().int(),
- intervalLength: z.number().int(),
+ fixedLimit: z.number().int(),
+ rollingLimit: z.number().int(),
+ rollingWindow: z.number().int(),
})
export const validate = fn(Schema, (input) => {
diff --git a/packages/console/core/src/identifier.ts b/packages/console/core/src/identifier.ts
index f94765ec7..b10bf32f6 100644
--- a/packages/console/core/src/identifier.ts
+++ b/packages/console/core/src/identifier.ts
@@ -11,6 +11,7 @@ export namespace Identifier {
model: "mod",
payment: "pay",
provider: "prv",
+ subscription: "sub",
usage: "usg",
user: "usr",
workspace: "wrk",
diff --git a/packages/console/core/src/schema/billing.sql.ts b/packages/console/core/src/schema/billing.sql.ts
index 42da13776..f56cf4182 100644
--- a/packages/console/core/src/schema/billing.sql.ts
+++ b/packages/console/core/src/schema/billing.sql.ts
@@ -30,6 +30,20 @@ export const BillingTable = mysqlTable(
],
)
+export const SubscriptionTable = mysqlTable(
+ "subscription",
+ {
+ ...workspaceColumns,
+ ...timestamps,
+ userID: ulid("user_id").notNull(),
+ rollingUsage: bigint("rolling_usage", { mode: "number" }),
+ fixedUsage: bigint("fixed_usage", { mode: "number" }),
+ timeRollingUpdated: utc("time_rolling_updated"),
+ timeFixedUpdated: utc("time_fixed_updated"),
+ },
+ (table) => [...workspaceIndexes(table), uniqueIndex("workspace_user_id").on(table.workspaceID, table.userID)],
+)
+
export const PaymentTable = mysqlTable(
"payment",
{
diff --git a/packages/console/core/src/schema/user.sql.ts b/packages/console/core/src/schema/user.sql.ts
index 46d02c4a8..7fd7f5e1e 100644
--- a/packages/console/core/src/schema/user.sql.ts
+++ b/packages/console/core/src/schema/user.sql.ts
@@ -18,12 +18,6 @@ export const UserTable = mysqlTable(
monthlyLimit: int("monthly_limit"),
monthlyUsage: bigint("monthly_usage", { mode: "number" }),
timeMonthlyUsageUpdated: utc("time_monthly_usage_updated"),
- // subscription
- timeSubscribed: utc("time_subscribed"),
- subIntervalUsage: bigint("sub_interval_usage", { mode: "number" }),
- subMonthlyUsage: bigint("sub_monthly_usage", { mode: "number" }),
- timeSubIntervalUsageUpdated: utc("sub_time_interval_usage_updated"),
- timeSubMonthlyUsageUpdated: utc("sub_time_monthly_usage_updated"),
},
(table) => [
...workspaceIndexes(table),
diff --git a/packages/console/core/src/util/date.ts b/packages/console/core/src/util/date.ts
new file mode 100644
index 000000000..72d6b8e19
--- /dev/null
+++ b/packages/console/core/src/util/date.ts
@@ -0,0 +1,9 @@
+export function getWeekBounds(date: Date) {
+ const dayOfWeek = date.getUTCDay()
+ const start = new Date(date)
+ start.setUTCDate(date.getUTCDate() - dayOfWeek)
+ start.setUTCHours(0, 0, 0, 0)
+ const end = new Date(start)
+ end.setUTCDate(start.getUTCDate() + 7)
+ return { start, end }
+}