Data Models

Designs dos dados do App

erDiagram

     TENANT ||--o{ PRODUCT :has
     TENANT ||--o{ SHOP :has     
     TENANT ||--o{ SERVICE :has
     TENANT ||--o{ USER :has
     SHOP ||--o{ CAIXA :has
     CAIXA ||--o{ COMANDA :has
     COMANDA ||--o{ COMANDA_ITEM :has
     COMANDA ||--o{ COMANDA_PAYMENT :has
     SHOP ||--o{ INVOICE :has
     INVOICE ||--o{ INVOICE_ITEM :has
     SHOP ||--o{ BOOKING :has
     
     USER ||--o{ USER_SERVICES :has
    TENANT {
        integer id PK "Tenant Identifier"
        string subdomain "Subdomain"
        string logo "Path containing logo"
    }
    SUPERADMIN {
        integer id PK
        string email
        string password
    }
    SHOP {
        integer id PK
        integer tenantId FK
    }
    PRODUCT {
        integer id PK
        integer tenantId FK
        string name  "Product name"
    }
    SERVICE {
        integer id PK
        integer tenantId FK
        double price 
        integer duration "Service duration time"
    }
    USER {
        integer id PK
        integer tenantId FK
    }
    USER_SERVICES {
        integer id PK
        integer tenantId FK
        integer userId  FK "User ID"
        integer serviceId FK "Service ID"
        double price "Service value"
        integer duration "Service duration time"
    }
    INVOICE {
        integer id PK
        integer tenantId FK 
        shopId id FK "Shop ID"
    }
    INVOICE_ITEM {
        integer id PK
        integer tenantId FK
        integer invoiceId FK
    }
    BOOKING {
        integer id PK
        integer tenantId FK
        integer shopId FK
        integer userId FK
        integer serviceId FK
        date date
        time startTime
        time endTime
    }
    CAIXA {
        integer id PK
        integer tenantId FK
        integer shopId FK
        datetime open_at "Data de abertura"
        datetime closed_at "Data do fechamento"
    }
    COMANDA {
        integer id PK
        integer tenantId FK
        integer shopId FK
        integer caixaId FK
        double total "Valor total da comanda"
    }
    COMANDA_ITEM {
        integer id PK
        integer comandaId FK
        double price "Valor do item"
    }
    COMANDA_PAYMENT {
        integer id PK
        integer comandaId FK
        double value "Valor do pagamento"
    }