Skip to content

Product Database

The productdb database stores subscription plans, pricing, and related entities.

Schema

erDiagram
    plan ||--o| plan_features : has
    plan ||--o{ price_tier : contains
    price_tier ||--o{ plan_subscription : "subscribed via"
    price_tier ||--o{ discount_code : "applies to"
    price_tier ||--o{ trial_offer : "offers"
    discount_code ||--o{ discount : creates
    plan_subscription ||--o{ discount : "applied to"
    plan_subscription ||--o{ trial : starts
    trial_offer ||--o{ trial : creates

    plan {
        uuid id PK
        string name
        string description
        boolean is_active
        string icon_url
        string foreign_service_id
    }

    plan_features {
        uuid plan_id PK,FK
        boolean ai_support
        int max_messages
        int support_tier
    }

    price_tier {
        uuid id PK
        uuid plan_id FK
        string name
        decimal price
        interval duration
        string status
        string foreign_service_id
    }

    plan_subscription {
        uuid id PK
        uuid price_tier_id FK
        uuid client_id
        uuid payment_confirmation_id
        timestamp start_date
        timestamp end_date
        string status
    }

    discount_code {
        uuid id PK
        uuid price_tier_id FK
        string code
        string name
        decimal discount
        interval duration
        timestamp expiry_date
    }

    discount {
        uuid id PK
        uuid discount_code_id FK
        uuid plan_subscription_id FK
    }

    trial_offer {
        uuid id PK
        uuid price_tier_id FK
    }

    trial {
        uuid id PK
        uuid plan_subscription_id FK
        uuid trial_offer_id FK
    }

Tables

plan

Base entity for subscription products. Each plan has features and one or more price tiers.

plan_features

Features included with a plan (AI support, message limits, support tier). One-to-one with plan.

price_tier

Pricing options for a plan. A plan may have multiple tiers (e.g., monthly, yearly) with different prices and durations.

plan_subscription

Records a client's subscription to a specific price tier, with start/end dates and payment confirmation reference.

discount_code

Promotional codes that can be applied to subscriptions for a discount percentage and duration.

trial_offer / trial

Trial period offerings and active trials for subscriptions.