zen: track session in usage
This commit is contained in:
@@ -100,26 +100,46 @@ export const stripeWebhook = new stripe.WebhookEndpoint("StripeWebhookEndpoint",
|
|||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|
||||||
const zenProduct = new stripe.Product("ZenBlack", {
|
const zenLiteProduct = new stripe.Product("ZenLite", {
|
||||||
|
name: "OpenCode Lite",
|
||||||
|
})
|
||||||
|
const zenLitePrice = new stripe.Price("ZenLitePrice", {
|
||||||
|
product: zenLiteProduct.id,
|
||||||
|
currency: "usd",
|
||||||
|
recurring: {
|
||||||
|
interval: "month",
|
||||||
|
intervalCount: 1,
|
||||||
|
},
|
||||||
|
unitAmount: 1000,
|
||||||
|
})
|
||||||
|
const ZEN_LITE_PRICE = new sst.Linkable("ZEN_LITE_PRICE", {
|
||||||
|
properties: {
|
||||||
|
product: zenLiteProduct.id,
|
||||||
|
price: zenLitePrice.id,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const ZEN_LITE_LIMITS = new sst.Secret("ZEN_LITE_LIMITS")
|
||||||
|
|
||||||
|
const zenBlackProduct = new stripe.Product("ZenBlack", {
|
||||||
name: "OpenCode Black",
|
name: "OpenCode Black",
|
||||||
})
|
})
|
||||||
const zenPriceProps = {
|
const zenBlackPriceProps = {
|
||||||
product: zenProduct.id,
|
product: zenBlackProduct.id,
|
||||||
currency: "usd",
|
currency: "usd",
|
||||||
recurring: {
|
recurring: {
|
||||||
interval: "month",
|
interval: "month",
|
||||||
intervalCount: 1,
|
intervalCount: 1,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
const zenPrice200 = new stripe.Price("ZenBlackPrice", { ...zenPriceProps, unitAmount: 20000 })
|
const zenBlackPrice200 = new stripe.Price("ZenBlackPrice", { ...zenBlackPriceProps, unitAmount: 20000 })
|
||||||
const zenPrice100 = new stripe.Price("ZenBlack100Price", { ...zenPriceProps, unitAmount: 10000 })
|
const zenBlackPrice100 = new stripe.Price("ZenBlack100Price", { ...zenBlackPriceProps, unitAmount: 10000 })
|
||||||
const zenPrice20 = new stripe.Price("ZenBlack20Price", { ...zenPriceProps, unitAmount: 2000 })
|
const zenBlackPrice20 = new stripe.Price("ZenBlack20Price", { ...zenBlackPriceProps, unitAmount: 2000 })
|
||||||
const ZEN_BLACK_PRICE = new sst.Linkable("ZEN_BLACK_PRICE", {
|
const ZEN_BLACK_PRICE = new sst.Linkable("ZEN_BLACK_PRICE", {
|
||||||
properties: {
|
properties: {
|
||||||
product: zenProduct.id,
|
product: zenBlackProduct.id,
|
||||||
plan200: zenPrice200.id,
|
plan200: zenBlackPrice200.id,
|
||||||
plan100: zenPrice100.id,
|
plan100: zenBlackPrice100.id,
|
||||||
plan20: zenPrice20.id,
|
plan20: zenBlackPrice20.id,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
const ZEN_BLACK_LIMITS = new sst.Secret("ZEN_BLACK_LIMITS")
|
const ZEN_BLACK_LIMITS = new sst.Secret("ZEN_BLACK_LIMITS")
|
||||||
@@ -196,6 +216,8 @@ new sst.cloudflare.x.SolidStart("Console", {
|
|||||||
AWS_SES_SECRET_ACCESS_KEY,
|
AWS_SES_SECRET_ACCESS_KEY,
|
||||||
ZEN_BLACK_PRICE,
|
ZEN_BLACK_PRICE,
|
||||||
ZEN_BLACK_LIMITS,
|
ZEN_BLACK_LIMITS,
|
||||||
|
ZEN_LITE_PRICE,
|
||||||
|
ZEN_LITE_LIMITS,
|
||||||
new sst.Secret("ZEN_SESSION_SECRET"),
|
new sst.Secret("ZEN_SESSION_SECRET"),
|
||||||
...ZEN_MODELS,
|
...ZEN_MODELS,
|
||||||
...($dev
|
...($dev
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { Billing } from "@opencode-ai/console-core/billing.js"
|
|||||||
import { Database, eq, and, isNull, sql } from "@opencode-ai/console-core/drizzle/index.js"
|
import { Database, eq, and, isNull, sql } from "@opencode-ai/console-core/drizzle/index.js"
|
||||||
import { BillingTable, SubscriptionTable } from "@opencode-ai/console-core/schema/billing.sql.js"
|
import { BillingTable, SubscriptionTable } from "@opencode-ai/console-core/schema/billing.sql.js"
|
||||||
import { Actor } from "@opencode-ai/console-core/actor.js"
|
import { Actor } from "@opencode-ai/console-core/actor.js"
|
||||||
import { Black } from "@opencode-ai/console-core/black.js"
|
import { Subscription } from "@opencode-ai/console-core/black.js"
|
||||||
import { withActor } from "~/context/auth.withActor"
|
import { withActor } from "~/context/auth.withActor"
|
||||||
import { queryBillingInfo } from "../../common"
|
import { queryBillingInfo } from "../../common"
|
||||||
import styles from "./black-section.module.css"
|
import styles from "./black-section.module.css"
|
||||||
@@ -35,12 +35,12 @@ const querySubscription = query(async (workspaceID: string) => {
|
|||||||
return {
|
return {
|
||||||
plan: row.subscription.plan,
|
plan: row.subscription.plan,
|
||||||
useBalance: row.subscription.useBalance ?? false,
|
useBalance: row.subscription.useBalance ?? false,
|
||||||
rollingUsage: Black.analyzeRollingUsage({
|
rollingUsage: Subscription.analyzeRollingUsage({
|
||||||
plan: row.subscription.plan,
|
plan: row.subscription.plan,
|
||||||
usage: row.rollingUsage ?? 0,
|
usage: row.rollingUsage ?? 0,
|
||||||
timeUpdated: row.timeRollingUpdated ?? new Date(),
|
timeUpdated: row.timeRollingUpdated ?? new Date(),
|
||||||
}),
|
}),
|
||||||
weeklyUsage: Black.analyzeWeeklyUsage({
|
weeklyUsage: Subscription.analyzeWeeklyUsage({
|
||||||
plan: row.subscription.plan,
|
plan: row.subscription.plan,
|
||||||
usage: row.fixedUsage ?? 0,
|
usage: row.fixedUsage ?? 0,
|
||||||
timeUpdated: row.timeFixedUpdated ?? new Date(),
|
timeUpdated: row.timeFixedUpdated ?? new Date(),
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ import { Billing } from "@opencode-ai/console-core/billing.js"
|
|||||||
import { Actor } from "@opencode-ai/console-core/actor.js"
|
import { Actor } from "@opencode-ai/console-core/actor.js"
|
||||||
import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
|
import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js"
|
||||||
import { ZenData } from "@opencode-ai/console-core/model.js"
|
import { ZenData } from "@opencode-ai/console-core/model.js"
|
||||||
import { Black, BlackData } from "@opencode-ai/console-core/black.js"
|
import { Subscription } from "@opencode-ai/console-core/subscription.js"
|
||||||
|
import { BlackData } from "@opencode-ai/console-core/black.js"
|
||||||
import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
|
import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
|
||||||
import { ModelTable } from "@opencode-ai/console-core/schema/model.sql.js"
|
import { ModelTable } from "@opencode-ai/console-core/schema/model.sql.js"
|
||||||
import { ProviderTable } from "@opencode-ai/console-core/schema/provider.sql.js"
|
import { ProviderTable } from "@opencode-ai/console-core/schema/provider.sql.js"
|
||||||
@@ -196,7 +197,7 @@ export async function handler(
|
|||||||
const costInfo = calculateCost(modelInfo, usageInfo)
|
const costInfo = calculateCost(modelInfo, usageInfo)
|
||||||
await trialLimiter?.track(usageInfo)
|
await trialLimiter?.track(usageInfo)
|
||||||
await rateLimiter?.track()
|
await rateLimiter?.track()
|
||||||
await trackUsage(billingSource, authInfo, modelInfo, providerInfo, usageInfo, costInfo)
|
await trackUsage(sessionId, billingSource, authInfo, modelInfo, providerInfo, usageInfo, costInfo)
|
||||||
await reload(billingSource, authInfo, costInfo)
|
await reload(billingSource, authInfo, costInfo)
|
||||||
|
|
||||||
const responseConverter = createResponseConverter(providerInfo.format, opts.format)
|
const responseConverter = createResponseConverter(providerInfo.format, opts.format)
|
||||||
@@ -246,7 +247,7 @@ export async function handler(
|
|||||||
const usageInfo = providerInfo.normalizeUsage(usage)
|
const usageInfo = providerInfo.normalizeUsage(usage)
|
||||||
const costInfo = calculateCost(modelInfo, usageInfo)
|
const costInfo = calculateCost(modelInfo, usageInfo)
|
||||||
await trialLimiter?.track(usageInfo)
|
await trialLimiter?.track(usageInfo)
|
||||||
await trackUsage(billingSource, authInfo, modelInfo, providerInfo, usageInfo, costInfo)
|
await trackUsage(sessionId, billingSource, authInfo, modelInfo, providerInfo, usageInfo, costInfo)
|
||||||
await reload(billingSource, authInfo, costInfo)
|
await reload(billingSource, authInfo, costInfo)
|
||||||
cost = calculateOccuredCost(billingSource, costInfo)
|
cost = calculateOccuredCost(billingSource, costInfo)
|
||||||
}
|
}
|
||||||
@@ -541,8 +542,9 @@ export async function handler(
|
|||||||
|
|
||||||
// Check weekly limit
|
// Check weekly limit
|
||||||
if (sub.fixedUsage && sub.timeFixedUpdated) {
|
if (sub.fixedUsage && sub.timeFixedUpdated) {
|
||||||
const result = Black.analyzeWeeklyUsage({
|
const blackData = BlackData.getLimits({ plan })
|
||||||
plan,
|
const result = Subscription.analyzeWeeklyUsage({
|
||||||
|
limit: blackData.fixedLimit,
|
||||||
usage: sub.fixedUsage,
|
usage: sub.fixedUsage,
|
||||||
timeUpdated: sub.timeFixedUpdated,
|
timeUpdated: sub.timeFixedUpdated,
|
||||||
})
|
})
|
||||||
@@ -555,8 +557,10 @@ export async function handler(
|
|||||||
|
|
||||||
// Check rolling limit
|
// Check rolling limit
|
||||||
if (sub.rollingUsage && sub.timeRollingUpdated) {
|
if (sub.rollingUsage && sub.timeRollingUpdated) {
|
||||||
const result = Black.analyzeRollingUsage({
|
const blackData = BlackData.getLimits({ plan })
|
||||||
plan,
|
const result = Subscription.analyzeRollingUsage({
|
||||||
|
limit: blackData.rollingLimit,
|
||||||
|
window: blackData.rollingWindow,
|
||||||
usage: sub.rollingUsage,
|
usage: sub.rollingUsage,
|
||||||
timeUpdated: sub.timeRollingUpdated,
|
timeUpdated: sub.timeRollingUpdated,
|
||||||
})
|
})
|
||||||
@@ -687,6 +691,7 @@ export async function handler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function trackUsage(
|
async function trackUsage(
|
||||||
|
sessionId: string,
|
||||||
billingSource: BillingSource,
|
billingSource: BillingSource,
|
||||||
authInfo: AuthInfo,
|
authInfo: AuthInfo,
|
||||||
modelInfo: ModelInfo,
|
modelInfo: ModelInfo,
|
||||||
@@ -734,6 +739,7 @@ export async function handler(
|
|||||||
cacheWrite1hTokens,
|
cacheWrite1hTokens,
|
||||||
cost,
|
cost,
|
||||||
keyID: authInfo.apiKeyId,
|
keyID: authInfo.apiKeyId,
|
||||||
|
sessionID: sessionId.substring(0, 30),
|
||||||
enrichment: billingSource === "subscription" ? { plan: "sub" } : undefined,
|
enrichment: billingSource === "subscription" ? { plan: "sub" } : undefined,
|
||||||
}),
|
}),
|
||||||
db
|
db
|
||||||
|
|||||||
@@ -0,0 +1,986 @@
|
|||||||
|
{
|
||||||
|
"version": "6",
|
||||||
|
"id": "aee779c5-db1d-4655-95ec-6451c18455be",
|
||||||
|
"prevIds": [
|
||||||
|
"00000000-0000-0000-0000-000000000000"
|
||||||
|
],
|
||||||
|
"dialect": "mysql",
|
||||||
|
"ddl": [
|
||||||
|
{
|
||||||
|
"name": "account",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "email",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "billing",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "workspace_id",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "customer_id",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "payment_method_id",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(4)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "payment_method_last4",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "bigint",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "balance",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "reload",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "payment",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "workspace_id",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "customer_id",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "payment_id",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "bigint",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "amount",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "usage",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "workspace_id",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "model",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "input_tokens",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "output_tokens",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "reasoning_tokens",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "cache_read_tokens",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "cache_write_tokens",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "bigint",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "cost",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "key",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "workspace_id",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "text",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "user_id",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "name",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "key",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_used",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "user",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "workspace_id",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "email",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "name",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_seen",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "color",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "workspace",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "slug",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "name",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"value": "email",
|
||||||
|
"isExpression": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isUnique": true,
|
||||||
|
"using": null,
|
||||||
|
"algorithm": null,
|
||||||
|
"lock": null,
|
||||||
|
"nameExplicit": true,
|
||||||
|
"name": "email",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "indexes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"workspace_id",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "pks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"workspace_id",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "pks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"workspace_id",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "pks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"value": "key",
|
||||||
|
"isExpression": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isUnique": true,
|
||||||
|
"using": null,
|
||||||
|
"algorithm": null,
|
||||||
|
"lock": null,
|
||||||
|
"nameExplicit": true,
|
||||||
|
"name": "global_key",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "indexes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"workspace_id",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "pks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"value": "workspace_id",
|
||||||
|
"isExpression": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "email",
|
||||||
|
"isExpression": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isUnique": true,
|
||||||
|
"using": null,
|
||||||
|
"algorithm": null,
|
||||||
|
"lock": null,
|
||||||
|
"nameExplicit": true,
|
||||||
|
"name": "user_email",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "indexes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"workspace_id",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "pks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"value": "slug",
|
||||||
|
"isExpression": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isUnique": true,
|
||||||
|
"using": null,
|
||||||
|
"algorithm": null,
|
||||||
|
"lock": null,
|
||||||
|
"nameExplicit": true,
|
||||||
|
"name": "slug",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "indexes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "pks"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"renames": []
|
||||||
|
}
|
||||||
@@ -0,0 +1,986 @@
|
|||||||
|
{
|
||||||
|
"version": "6",
|
||||||
|
"id": "79b7ee25-1c1c-41ff-9bbf-754af257102b",
|
||||||
|
"prevIds": [
|
||||||
|
"aee779c5-db1d-4655-95ec-6451c18455be"
|
||||||
|
],
|
||||||
|
"dialect": "mysql",
|
||||||
|
"ddl": [
|
||||||
|
{
|
||||||
|
"name": "account",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "email",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "billing",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "workspace_id",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "customer_id",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "payment_method_id",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(4)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "payment_method_last4",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "bigint",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "balance",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "reload",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "payment",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "workspace_id",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "customer_id",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "payment_id",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "bigint",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "amount",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "usage",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "workspace_id",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "model",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "input_tokens",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "output_tokens",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "reasoning_tokens",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "cache_read_tokens",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "cache_write_tokens",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "bigint",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "cost",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "key",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "workspace_id",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "json",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "actor",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "name",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "key",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_used",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "user",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "workspace_id",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "email",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "name",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_seen",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "color",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "workspace",
|
||||||
|
"entityType": "tables"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(30)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "id",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "slug",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "varchar(255)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "name",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "(now())",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_created",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": true,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)",
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_updated",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "timestamp(3)",
|
||||||
|
"notNull": false,
|
||||||
|
"autoIncrement": false,
|
||||||
|
"default": null,
|
||||||
|
"onUpdateNow": false,
|
||||||
|
"onUpdateNowFsp": null,
|
||||||
|
"charSet": null,
|
||||||
|
"collation": null,
|
||||||
|
"generated": null,
|
||||||
|
"name": "time_deleted",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"value": "email",
|
||||||
|
"isExpression": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isUnique": true,
|
||||||
|
"using": null,
|
||||||
|
"algorithm": null,
|
||||||
|
"lock": null,
|
||||||
|
"nameExplicit": true,
|
||||||
|
"name": "email",
|
||||||
|
"table": "account",
|
||||||
|
"entityType": "indexes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"workspace_id",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "billing",
|
||||||
|
"entityType": "pks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"workspace_id",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "payment",
|
||||||
|
"entityType": "pks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"workspace_id",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "usage",
|
||||||
|
"entityType": "pks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"value": "key",
|
||||||
|
"isExpression": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isUnique": true,
|
||||||
|
"using": null,
|
||||||
|
"algorithm": null,
|
||||||
|
"lock": null,
|
||||||
|
"nameExplicit": true,
|
||||||
|
"name": "global_key",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "indexes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"workspace_id",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "key",
|
||||||
|
"entityType": "pks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"value": "workspace_id",
|
||||||
|
"isExpression": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "email",
|
||||||
|
"isExpression": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isUnique": true,
|
||||||
|
"using": null,
|
||||||
|
"algorithm": null,
|
||||||
|
"lock": null,
|
||||||
|
"nameExplicit": true,
|
||||||
|
"name": "user_email",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "indexes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"workspace_id",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "user",
|
||||||
|
"entityType": "pks"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"value": "slug",
|
||||||
|
"isExpression": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isUnique": true,
|
||||||
|
"using": null,
|
||||||
|
"algorithm": null,
|
||||||
|
"lock": null,
|
||||||
|
"nameExplicit": true,
|
||||||
|
"name": "slug",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "indexes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"columns": [
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"name": "PRIMARY",
|
||||||
|
"table": "workspace",
|
||||||
|
"entityType": "pks"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"renames": []
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user