From f07724c224c4ed441e348b6785a60de8b09039ff Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Tue, 2 Jun 2026 20:00:03 +0000 Subject: [PATCH] refactor(infra): colocate stripe lake table --- infra/console.ts | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ infra/stats.ts | 82 --------------------------------------------- 2 files changed, 86 insertions(+), 82 deletions(-) diff --git a/infra/console.ts b/infra/console.ts index db2356a729c..08057ad40ef 100644 --- a/infra/console.ts +++ b/infra/console.ts @@ -103,6 +103,92 @@ export const stripeWebhook = new stripe.WebhookEndpoint("StripeWebhookEndpoint", ], }) +export const stripeEvent = lake + ? (() => { + const billingNamespace = new aws.s3tables.Namespace("LakeBillingNamespace", { + namespace: "billing", + tableBucketArn: lake.tableBucket.arn, + }) + + const stripeTable = new aws.s3tables.Table( + "LakeBillingStripeTable", + { + name: "stripe", + namespace: billingNamespace.namespace, + tableBucketArn: billingNamespace.tableBucketArn, + format: "ICEBERG", + metadata: { + iceberg: { + schema: { + fields: [ + { name: "event_timestamp", type: "string", required: false }, + { name: "event_date", type: "string", required: false }, + { name: "event_id", type: "string", required: false }, + { name: "event_type", type: "string", required: false }, + { name: "api_version", type: "string", required: false }, + { name: "livemode", type: "boolean", required: false }, + { name: "pending_webhooks", type: "int", required: false }, + { name: "request_id", type: "string", required: false }, + { name: "idempotency_key", type: "string", required: false }, + { name: "object_id", type: "string", required: false }, + { name: "object_type", type: "string", required: false }, + { name: "object_created_timestamp", type: "string", required: false }, + { name: "customer_id", type: "string", required: false }, + { name: "customer_email", type: "string", required: false }, + { name: "customer_name", type: "string", required: false }, + { name: "customer_phone", type: "string", required: false }, + { name: "workspace_id", type: "string", required: false }, + { name: "user_id", type: "string", required: false }, + { name: "user_email", type: "string", required: false }, + { name: "subscription_id", type: "string", required: false }, + { name: "invoice_id", type: "string", required: false }, + { name: "charge_id", type: "string", required: false }, + { name: "payment_intent_id", type: "string", required: false }, + { name: "payment_method_id", type: "string", required: false }, + { name: "checkout_session_id", type: "string", required: false }, + { name: "refund_id", type: "string", required: false }, + { name: "product_id", type: "string", required: false }, + { name: "price_id", type: "string", required: false }, + { name: "quantity", type: "long", required: false }, + { name: "status", type: "string", required: false }, + { name: "billing_reason", type: "string", required: false }, + { name: "collection_method", type: "string", required: false }, + { name: "cancel_at_period_end", type: "boolean", required: false }, + { name: "canceled_at_timestamp", type: "string", required: false }, + { name: "cancel_at_timestamp", type: "string", required: false }, + { name: "cancellation_reason", type: "string", required: false }, + { name: "currency", type: "string", required: false }, + { name: "amount", type: "long", required: false }, + { name: "amount_paid", type: "long", required: false }, + { name: "amount_due", type: "long", required: false }, + { name: "amount_refunded", type: "long", required: false }, + { name: "refunded", type: "boolean", required: false }, + { name: "refund_reason", type: "string", required: false }, + { name: "current_period_start_timestamp", type: "string", required: false }, + { name: "current_period_end_timestamp", type: "string", required: false }, + { name: "metadata", type: "string", required: false }, + { name: "previous_attributes", type: "string", required: false }, + ], + }, + }, + }, + }, + { deleteBeforeReplace: $app.stage !== "production" }, + ) + + return new sst.Linkable("StripeEvent", { + properties: { + region: lake.lakeRegion, + catalog: lake.lakeCatalog, + database: billingNamespace.namespace, + table: stripeTable.name, + tableBucket: lake.tableBucket.name, + workgroup: lake.lakeAthenaWorkgroup.name, + }, + }) + })() + : undefined + const zenLiteProduct = new stripe.Product("ZenLite", { name: "OpenCode Go", }) diff --git a/infra/stats.ts b/infra/stats.ts index 5f2259944af..59dbb8d8a23 100644 --- a/infra/stats.ts +++ b/infra/stats.ts @@ -87,77 +87,6 @@ const inferenceEventTable = new aws.s3tables.Table( { deleteBeforeReplace: $app.stage !== "production" }, ) -const billingNamespace = new aws.s3tables.Namespace("LakeBillingNamespace", { - namespace: "billing", - tableBucketArn: tableBucket.arn, -}) - -const stripeTable = new aws.s3tables.Table( - "LakeBillingStripeTable", - { - name: "stripe", - namespace: billingNamespace.namespace, - tableBucketArn: billingNamespace.tableBucketArn, - format: "ICEBERG", - metadata: { - iceberg: { - schema: { - fields: [ - { name: "event_timestamp", type: "string", required: false }, - { name: "event_date", type: "string", required: false }, - { name: "event_id", type: "string", required: false }, - { name: "event_type", type: "string", required: false }, - { name: "api_version", type: "string", required: false }, - { name: "livemode", type: "boolean", required: false }, - { name: "pending_webhooks", type: "int", required: false }, - { name: "request_id", type: "string", required: false }, - { name: "idempotency_key", type: "string", required: false }, - { name: "object_id", type: "string", required: false }, - { name: "object_type", type: "string", required: false }, - { name: "object_created_timestamp", type: "string", required: false }, - { name: "customer_id", type: "string", required: false }, - { name: "customer_email", type: "string", required: false }, - { name: "customer_name", type: "string", required: false }, - { name: "customer_phone", type: "string", required: false }, - { name: "workspace_id", type: "string", required: false }, - { name: "user_id", type: "string", required: false }, - { name: "user_email", type: "string", required: false }, - { name: "subscription_id", type: "string", required: false }, - { name: "invoice_id", type: "string", required: false }, - { name: "charge_id", type: "string", required: false }, - { name: "payment_intent_id", type: "string", required: false }, - { name: "payment_method_id", type: "string", required: false }, - { name: "checkout_session_id", type: "string", required: false }, - { name: "refund_id", type: "string", required: false }, - { name: "product_id", type: "string", required: false }, - { name: "price_id", type: "string", required: false }, - { name: "quantity", type: "long", required: false }, - { name: "status", type: "string", required: false }, - { name: "billing_reason", type: "string", required: false }, - { name: "collection_method", type: "string", required: false }, - { name: "cancel_at_period_end", type: "boolean", required: false }, - { name: "canceled_at_timestamp", type: "string", required: false }, - { name: "cancel_at_timestamp", type: "string", required: false }, - { name: "cancellation_reason", type: "string", required: false }, - { name: "currency", type: "string", required: false }, - { name: "amount", type: "long", required: false }, - { name: "amount_paid", type: "long", required: false }, - { name: "amount_due", type: "long", required: false }, - { name: "amount_refunded", type: "long", required: false }, - { name: "refunded", type: "boolean", required: false }, - { name: "refund_reason", type: "string", required: false }, - { name: "current_period_start_timestamp", type: "string", required: false }, - { name: "current_period_end_timestamp", type: "string", required: false }, - { name: "metadata", type: "string", required: false }, - { name: "previous_attributes", type: "string", required: false }, - ], - }, - }, - }, - }, - { deleteBeforeReplace: $app.stage !== "production" }, -) - export const inferenceEvent = new sst.Linkable("InferenceEvent", { properties: { region: lakeRegion, @@ -169,17 +98,6 @@ export const inferenceEvent = new sst.Linkable("InferenceEvent", { }, }) -export const stripeEvent = new sst.Linkable("StripeEvent", { - properties: { - region: lakeRegion, - catalog: lakeCatalog, - database: billingNamespace.namespace, - table: stripeTable.name, - tableBucket: tableBucket.name, - workgroup: lakeAthenaWorkgroup.name, - }, -}) - //////////////// // DATABASE ////////////////