-
Notifications
You must be signed in to change notification settings - Fork 24
Adding monetization support at Devportal #604
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -17,6 +17,7 @@ DROP TABLE IF EXISTS "DP_API_LABELS"; | |
| DROP TABLE IF EXISTS "DP_APPLICATION" CASCADE; | ||
| DROP TABLE IF EXISTS "DP_API_SUBSCRIPTION"; | ||
| DROP TABLE IF EXISTS "session"; | ||
| DROP TABLE IF EXISTS "DP_BILLING_ENGINE_KEYS"; | ||
|
|
||
|
|
||
| CREATE TABLE "DP_ORGANIZATION" ( | ||
|
|
@@ -134,6 +135,7 @@ CREATE TABLE "DP_API_METADATA" ( | |
| "METADATA_SEARCH" JSON, | ||
| "PROVIDER" VARCHAR(256), | ||
| "TAGS" VARCHAR(256), | ||
| "MONETIZATION_ENABLED" BOOLEAN DEFAULT FALSE, | ||
| FOREIGN KEY ("ORG_ID") REFERENCES "DP_ORGANIZATION"("ORG_ID") ON DELETE CASCADE, | ||
| UNIQUE ("ORG_ID", "API_NAME", "API_VERSION"), | ||
| PRIMARY KEY ("API_ID") | ||
|
|
@@ -262,3 +264,39 @@ CREATE INDEX idx_metadata_org_id ON "DP_API_METADATA"("ORG_ID"); | |
|
|
||
| CREATE INDEX idx_metadata_search ON "DP_API_METADATA" USING gin(to_tsvector('english', "METADATA_SEARCH")); | ||
| CREATE INDEX "IDX_session_expire" ON "session" ("expire"); | ||
| CREATE INDEX "IDX_DP_SUB_ORG_APP_API" ON "DP_API_SUBSCRIPTION" ("ORG_ID","APP_ID","API_ID"); | ||
|
|
||
| CREATE INDEX "IDX_DP_SUB_BILLING_SUB" ON "DP_API_SUBSCRIPTION" ("BILLING_SUBSCRIPTION_ID"); | ||
|
|
||
| CREATE INDEX "IDX_DP_SUB_BILLING_CUSTOMER" ON "DP_API_SUBSCRIPTION" ("BILLING_CUSTOMER_ID"); | ||
|
|
||
| -- DP_BILLING_ENGINE_KEYS: Billing engine keys for each org (Stripe, etc.) | ||
| CREATE TABLE IF NOT EXISTS "DP_BILLING_ENGINE_KEYS" ( | ||
| "ID" UUID PRIMARY KEY DEFAULT gen_random_uuid(), | ||
| "ORG_ID" UUID NOT NULL, | ||
| "BILLING_ENGINE" VARCHAR(32) NOT NULL, | ||
| "SECRET_KEY_ENC" TEXT NOT NULL, | ||
| "PUBLISHABLE_KEY_ENC" TEXT NOT NULL, | ||
| "WEBHOOK_SECRET_ENC" TEXT NOT NULL, | ||
| "CREATED_AT" TIMESTAMP DEFAULT NOW(), | ||
| "UPDATED_AT" TIMESTAMP DEFAULT NOW(), | ||
| UNIQUE ("ORG_ID", "BILLING_ENGINE") | ||
| ); | ||
| CREATE INDEX IF NOT EXISTS "IDX_BILLING_ENGINE_KEYS_ORG_ID" ON "DP_BILLING_ENGINE_KEYS"("ORG_ID"); | ||
|
Comment on lines
+273
to
+285
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Type mismatch:
🔎 Proposed fix CREATE TABLE IF NOT EXISTS "DP_BILLING_ENGINE_KEYS" (
"ID" UUID PRIMARY KEY DEFAULT gen_random_uuid(),
- "ORG_ID" UUID NOT NULL,
+ "ORG_ID" VARCHAR(256) NOT NULL,
"BILLING_ENGINE" VARCHAR(32) NOT NULL,
...
+ FOREIGN KEY ("ORG_ID") REFERENCES "DP_ORGANIZATION"("ORG_ID") ON DELETE CASCADE
);
🤖 Prompt for AI Agents |
||
|
|
||
| -- Add missing monetization fields to DP_SUBSCRIPTION_POLICY if not present | ||
| ALTER TABLE "DP_SUBSCRIPTION_POLICY" ADD COLUMN IF NOT EXISTS "PRICING_MODEL" VARCHAR(256); | ||
| ALTER TABLE "DP_SUBSCRIPTION_POLICY" ADD COLUMN IF NOT EXISTS "CURRENCY" VARCHAR(256); | ||
| ALTER TABLE "DP_SUBSCRIPTION_POLICY" ADD COLUMN IF NOT EXISTS "BILLING_PERIOD" VARCHAR(256); | ||
| ALTER TABLE "DP_SUBSCRIPTION_POLICY" ADD COLUMN IF NOT EXISTS "FLAT_AMOUNT" DECIMAL; | ||
| ALTER TABLE "DP_SUBSCRIPTION_POLICY" ADD COLUMN IF NOT EXISTS "UNIT_AMOUNT" DECIMAL; | ||
| ALTER TABLE "DP_SUBSCRIPTION_POLICY" ADD COLUMN IF NOT EXISTS "PRICING_METADATA" JSONB; | ||
|
|
||
| -- Add missing monetization/billing fields to DP_API_SUBSCRIPTION if not present | ||
| ALTER TABLE "DP_API_SUBSCRIPTION" ADD COLUMN IF NOT EXISTS "BILLING_CUSTOMER_ID" VARCHAR(256); | ||
| ALTER TABLE "DP_API_SUBSCRIPTION" ADD COLUMN IF NOT EXISTS "BILLING_SUBSCRIPTION_ID" VARCHAR(256); | ||
| ALTER TABLE "DP_API_SUBSCRIPTION" ADD COLUMN IF NOT EXISTS "PAYMENT_PROVIDER" VARCHAR(64); | ||
| ALTER TABLE "DP_API_SUBSCRIPTION" ADD COLUMN IF NOT EXISTS "PAYMENT_STATUS" VARCHAR(64); | ||
| ALTER TABLE "DP_API_SUBSCRIPTION" ADD COLUMN IF NOT EXISTS "CHECKOUT_SESSION_ID" VARCHAR(256); | ||
|
|
||
|
|
||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indexes reference columns that don't exist yet in CREATE TABLE.
The indexes
IDX_DP_SUB_BILLING_SUBandIDX_DP_SUB_BILLING_CUSTOMERreferenceBILLING_SUBSCRIPTION_IDandBILLING_CUSTOMER_IDcolumns, but these columns are only added viaALTER TABLEstatements at lines 296-300. TheCREATE TABLEforDP_API_SUBSCRIPTION(lines 208-218) doesn't include these columns.For a fresh database install, this script will fail because the indexes are created before the columns exist.
🔎 Proposed fix
Move the index creation statements after the ALTER TABLE statements, or add the columns directly in the CREATE TABLE statement:
CREATE TABLE "DP_API_SUBSCRIPTION" ( "SUB_ID" VARCHAR(256) NOT NULL, "APP_ID" VARCHAR(256) NOT NULL, "ORG_ID" VARCHAR(256) NOT NULL, "API_ID" VARCHAR(256) NOT NULL, "POLICY_ID" VARCHAR(256) NOT NULL, + "BILLING_CUSTOMER_ID" VARCHAR(256), + "BILLING_SUBSCRIPTION_ID" VARCHAR(256), + "PAYMENT_PROVIDER" VARCHAR(64), + "PAYMENT_STATUS" VARCHAR(64), + "CHECKOUT_SESSION_ID" VARCHAR(256), PRIMARY KEY ("SUB_ID"), ... );Then remove the corresponding ALTER TABLE statements at lines 296-300.
🤖 Prompt for AI Agents