{
  "version": "5",
  "dialect": "mysql",
  "id": "56283e76-5862-45f1-96df-9fc2ca0772ef",
  "prevId": "90a3d048-a028-4a20-9e19-d9bd00285443",
  "tables": {
    "admin_audit_logs": {
      "name": "admin_audit_logs",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "adminId": {
          "name": "adminId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "action": {
          "name": "action",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "resourceType": {
          "name": "resourceType",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "resourceId": {
          "name": "resourceId",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "details": {
          "name": "details",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "ipAddress": {
          "name": "ipAddress",
          "type": "varchar(45)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "userAgent": {
          "name": "userAgent",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        }
      },
      "indexes": {
        "audit_admin_idx": {
          "name": "audit_admin_idx",
          "columns": [
            "adminId"
          ],
          "isUnique": false
        },
        "audit_action_idx": {
          "name": "audit_action_idx",
          "columns": [
            "action"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "admin_audit_logs_id": {
          "name": "admin_audit_logs_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "faqs": {
      "name": "faqs",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "category": {
          "name": "category",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "question": {
          "name": "question",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "answer": {
          "name": "answer",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "order": {
          "name": "order",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": 0
        },
        "isActive": {
          "name": "isActive",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": true
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        },
        "updatedAt": {
          "name": "updatedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "onUpdate": true,
          "default": "(now())"
        }
      },
      "indexes": {
        "faq_category_idx": {
          "name": "faq_category_idx",
          "columns": [
            "category"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "faqs_id": {
          "name": "faqs_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "fraud_alerts": {
      "name": "fraud_alerts",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "userId": {
          "name": "userId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "transactionId": {
          "name": "transactionId",
          "type": "int",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "ruleId": {
          "name": "ruleId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "ruleName": {
          "name": "ruleName",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "severity": {
          "name": "severity",
          "type": "enum('low','medium','high','critical')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "transactionAmount": {
          "name": "transactionAmount",
          "type": "decimal(15,2)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "userDetails": {
          "name": "userDetails",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "status": {
          "name": "status",
          "type": "enum('new','reviewed','resolved','false_positive')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'new'"
        },
        "reviewedBy": {
          "name": "reviewedBy",
          "type": "int",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "reviewedAt": {
          "name": "reviewedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "notes": {
          "name": "notes",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        }
      },
      "indexes": {
        "alert_user_idx": {
          "name": "alert_user_idx",
          "columns": [
            "userId"
          ],
          "isUnique": false
        },
        "alert_status_idx": {
          "name": "alert_status_idx",
          "columns": [
            "status"
          ],
          "isUnique": false
        },
        "alert_rule_idx": {
          "name": "alert_rule_idx",
          "columns": [
            "ruleId"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "fraud_alerts_id": {
          "name": "fraud_alerts_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "fraud_rules": {
      "name": "fraud_rules",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "name": {
          "name": "name",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "description": {
          "name": "description",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "ruleType": {
          "name": "ruleType",
          "type": "enum('velocity','amount_threshold','device_fingerprint','geo_anomaly','custom')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "condition": {
          "name": "condition",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "action": {
          "name": "action",
          "type": "enum('alert','block','review')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'alert'"
        },
        "severity": {
          "name": "severity",
          "type": "enum('low','medium','high','critical')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'medium'"
        },
        "isEnabled": {
          "name": "isEnabled",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": true
        },
        "parameters": {
          "name": "parameters",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "createdBy": {
          "name": "createdBy",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        },
        "updatedAt": {
          "name": "updatedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "onUpdate": true,
          "default": "(now())"
        }
      },
      "indexes": {
        "fraud_enabled_idx": {
          "name": "fraud_enabled_idx",
          "columns": [
            "isEnabled"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "fraud_rules_id": {
          "name": "fraud_rules_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {
        "fraud_rules_name_unique": {
          "name": "fraud_rules_name_unique",
          "columns": [
            "name"
          ]
        }
      },
      "checkConstraint": {}
    },
    "giftcard_denominations": {
      "name": "giftcard_denominations",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "providerId": {
          "name": "providerId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "denomination": {
          "name": "denomination",
          "type": "decimal(15,2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "price": {
          "name": "price",
          "type": "decimal(15,2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "currency": {
          "name": "currency",
          "type": "varchar(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'USD'"
        },
        "stock": {
          "name": "stock",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": 0
        },
        "isActive": {
          "name": "isActive",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": true
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        },
        "updatedAt": {
          "name": "updatedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "onUpdate": true,
          "default": "(now())"
        }
      },
      "indexes": {
        "gcd_provider_idx": {
          "name": "gcd_provider_idx",
          "columns": [
            "providerId"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "giftcard_denominations_id": {
          "name": "giftcard_denominations_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "giftcard_providers": {
      "name": "giftcard_providers",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "name": {
          "name": "name",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "code": {
          "name": "code",
          "type": "varchar(50)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "category": {
          "name": "category",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "isActive": {
          "name": "isActive",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": true
        },
        "apiKey": {
          "name": "apiKey",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "apiEndpoint": {
          "name": "apiEndpoint",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "commission": {
          "name": "commission",
          "type": "decimal(5,2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'0'"
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        },
        "updatedAt": {
          "name": "updatedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "onUpdate": true,
          "default": "(now())"
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "giftcard_providers_id": {
          "name": "giftcard_providers_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {
        "giftcard_providers_name_unique": {
          "name": "giftcard_providers_name_unique",
          "columns": [
            "name"
          ]
        },
        "giftcard_providers_code_unique": {
          "name": "giftcard_providers_code_unique",
          "columns": [
            "code"
          ]
        }
      },
      "checkConstraint": {}
    },
    "giftcard_transactions": {
      "name": "giftcard_transactions",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "userId": {
          "name": "userId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "denominationId": {
          "name": "denominationId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "quantity": {
          "name": "quantity",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "totalAmount": {
          "name": "totalAmount",
          "type": "decimal(15,2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "status": {
          "name": "status",
          "type": "enum('pending','success','failed','cancelled','redeemed')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'pending'"
        },
        "reference": {
          "name": "reference",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "providerReference": {
          "name": "providerReference",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "cardCodes": {
          "name": "cardCodes",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "expiryDate": {
          "name": "expiryDate",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        },
        "updatedAt": {
          "name": "updatedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "onUpdate": true,
          "default": "(now())"
        }
      },
      "indexes": {
        "gc_user_idx": {
          "name": "gc_user_idx",
          "columns": [
            "userId"
          ],
          "isUnique": false
        },
        "gc_status_idx": {
          "name": "gc_status_idx",
          "columns": [
            "status"
          ],
          "isUnique": false
        },
        "gc_ref_idx": {
          "name": "gc_ref_idx",
          "columns": [
            "reference"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "giftcard_transactions_id": {
          "name": "giftcard_transactions_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {
        "giftcard_transactions_reference_unique": {
          "name": "giftcard_transactions_reference_unique",
          "columns": [
            "reference"
          ]
        }
      },
      "checkConstraint": {}
    },
    "support_tickets": {
      "name": "support_tickets",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "userId": {
          "name": "userId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "ticketNumber": {
          "name": "ticketNumber",
          "type": "varchar(50)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "subject": {
          "name": "subject",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "category": {
          "name": "category",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "priority": {
          "name": "priority",
          "type": "enum('low','medium','high','urgent')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'medium'"
        },
        "status": {
          "name": "status",
          "type": "enum('open','in_progress','waiting_customer','resolved','closed')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'open'"
        },
        "description": {
          "name": "description",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "assignedTo": {
          "name": "assignedTo",
          "type": "int",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "resolution": {
          "name": "resolution",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        },
        "updatedAt": {
          "name": "updatedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "onUpdate": true,
          "default": "(now())"
        },
        "closedAt": {
          "name": "closedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        }
      },
      "indexes": {
        "ticket_user_idx": {
          "name": "ticket_user_idx",
          "columns": [
            "userId"
          ],
          "isUnique": false
        },
        "ticket_status_idx": {
          "name": "ticket_status_idx",
          "columns": [
            "status"
          ],
          "isUnique": false
        },
        "ticket_assign_idx": {
          "name": "ticket_assign_idx",
          "columns": [
            "assignedTo"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "support_tickets_id": {
          "name": "support_tickets_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {
        "support_tickets_ticketNumber_unique": {
          "name": "support_tickets_ticketNumber_unique",
          "columns": [
            "ticketNumber"
          ]
        }
      },
      "checkConstraint": {}
    },
    "ticket_messages": {
      "name": "ticket_messages",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "ticketId": {
          "name": "ticketId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "userId": {
          "name": "userId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "message": {
          "name": "message",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "attachments": {
          "name": "attachments",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "isInternal": {
          "name": "isInternal",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": false
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        }
      },
      "indexes": {
        "msg_ticket_idx": {
          "name": "msg_ticket_idx",
          "columns": [
            "ticketId"
          ],
          "isUnique": false
        },
        "msg_user_idx": {
          "name": "msg_user_idx",
          "columns": [
            "userId"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "ticket_messages_id": {
          "name": "ticket_messages_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "users": {
      "name": "users",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "openId": {
          "name": "openId",
          "type": "varchar(64)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "name": {
          "name": "name",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "email": {
          "name": "email",
          "type": "varchar(320)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "loginMethod": {
          "name": "loginMethod",
          "type": "varchar(64)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "role": {
          "name": "role",
          "type": "enum('user','admin')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'user'"
        },
        "walletBalance": {
          "name": "walletBalance",
          "type": "decimal(15,2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'0.00'"
        },
        "kycStatus": {
          "name": "kycStatus",
          "type": "enum('unverified','pending','verified','rejected')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'unverified'"
        },
        "deviceFingerprint": {
          "name": "deviceFingerprint",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "lastIpAddress": {
          "name": "lastIpAddress",
          "type": "varchar(45)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "lastLocation": {
          "name": "lastLocation",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "isActive": {
          "name": "isActive",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": true
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        },
        "updatedAt": {
          "name": "updatedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "onUpdate": true,
          "default": "(now())"
        },
        "lastSignedIn": {
          "name": "lastSignedIn",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        }
      },
      "indexes": {
        "role_idx": {
          "name": "role_idx",
          "columns": [
            "role"
          ],
          "isUnique": false
        },
        "kyc_idx": {
          "name": "kyc_idx",
          "columns": [
            "kycStatus"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "users_id": {
          "name": "users_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {
        "users_openId_unique": {
          "name": "users_openId_unique",
          "columns": [
            "openId"
          ]
        }
      },
      "checkConstraint": {}
    },
    "vtu_providers": {
      "name": "vtu_providers",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "name": {
          "name": "name",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "code": {
          "name": "code",
          "type": "varchar(50)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "type": {
          "name": "type",
          "type": "enum('airtime','data','both')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "isActive": {
          "name": "isActive",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": true
        },
        "apiKey": {
          "name": "apiKey",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "apiEndpoint": {
          "name": "apiEndpoint",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "commission": {
          "name": "commission",
          "type": "decimal(5,2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'0'"
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        },
        "updatedAt": {
          "name": "updatedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "onUpdate": true,
          "default": "(now())"
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "vtu_providers_id": {
          "name": "vtu_providers_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {
        "vtu_providers_name_unique": {
          "name": "vtu_providers_name_unique",
          "columns": [
            "name"
          ]
        },
        "vtu_providers_code_unique": {
          "name": "vtu_providers_code_unique",
          "columns": [
            "code"
          ]
        }
      },
      "checkConstraint": {}
    },
    "vtu_transactions": {
      "name": "vtu_transactions",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "userId": {
          "name": "userId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "providerId": {
          "name": "providerId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "type": {
          "name": "type",
          "type": "enum('airtime','data')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "phoneNumber": {
          "name": "phoneNumber",
          "type": "varchar(20)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "amount": {
          "name": "amount",
          "type": "decimal(15,2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "status": {
          "name": "status",
          "type": "enum('pending','success','failed','cancelled')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'pending'"
        },
        "reference": {
          "name": "reference",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "providerReference": {
          "name": "providerReference",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "receipt": {
          "name": "receipt",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "errorMessage": {
          "name": "errorMessage",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        },
        "updatedAt": {
          "name": "updatedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "onUpdate": true,
          "default": "(now())"
        }
      },
      "indexes": {
        "vtu_user_idx": {
          "name": "vtu_user_idx",
          "columns": [
            "userId"
          ],
          "isUnique": false
        },
        "vtu_status_idx": {
          "name": "vtu_status_idx",
          "columns": [
            "status"
          ],
          "isUnique": false
        },
        "vtu_ref_idx": {
          "name": "vtu_ref_idx",
          "columns": [
            "reference"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "vtu_transactions_id": {
          "name": "vtu_transactions_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {
        "vtu_transactions_reference_unique": {
          "name": "vtu_transactions_reference_unique",
          "columns": [
            "reference"
          ]
        }
      },
      "checkConstraint": {}
    },
    "wallet_transactions": {
      "name": "wallet_transactions",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "userId": {
          "name": "userId",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "type": {
          "name": "type",
          "type": "enum('deposit','withdrawal','vtu_purchase','giftcard_purchase','refund')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "amount": {
          "name": "amount",
          "type": "decimal(15,2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "balanceBefore": {
          "name": "balanceBefore",
          "type": "decimal(15,2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "balanceAfter": {
          "name": "balanceAfter",
          "type": "decimal(15,2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "status": {
          "name": "status",
          "type": "enum('pending','success','failed','cancelled')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'pending'"
        },
        "reference": {
          "name": "reference",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "description": {
          "name": "description",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "metadata": {
          "name": "metadata",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "createdAt": {
          "name": "createdAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(now())"
        },
        "updatedAt": {
          "name": "updatedAt",
          "type": "timestamp",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "onUpdate": true,
          "default": "(now())"
        }
      },
      "indexes": {
        "user_idx": {
          "name": "user_idx",
          "columns": [
            "userId"
          ],
          "isUnique": false
        },
        "status_idx": {
          "name": "status_idx",
          "columns": [
            "status"
          ],
          "isUnique": false
        },
        "ref_idx": {
          "name": "ref_idx",
          "columns": [
            "reference"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "wallet_transactions_id": {
          "name": "wallet_transactions_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {
        "wallet_transactions_reference_unique": {
          "name": "wallet_transactions_reference_unique",
          "columns": [
            "reference"
          ]
        }
      },
      "checkConstraint": {}
    }
  },
  "views": {},
  "_meta": {
    "schemas": {},
    "tables": {},
    "columns": {}
  },
  "internal": {
    "tables": {},
    "indexes": {}
  }
}