{ "id": "ac75302b-ea07-473a-a01c-4af66bafc145", "prevId": "af39cfd1-db9c-44de-ae7b-10710e0c0f93", "version": "7", "dialect": "postgresql", "tables": { "public.audit_log": { "name": "audit_log", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": false }, "firm_id": { "name": "firm_id", "type": "uuid", "primaryKey": false, "notNull": false }, "action": { "name": "action", "type": "text", "primaryKey": false, "notNull": true }, "meta": { "name": "meta", "type": "text", "primaryKey": false, "notNull": false }, "ip": { "name": "ip", "type": "inet", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "audit_firm_idx": { "name": "audit_firm_idx", "columns": [ { "expression": "firm_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "created_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "audit_log_user_id_users_id_fk": { "name": "audit_log_user_id_users_id_fk", "tableFrom": "audit_log", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" }, "audit_log_firm_id_firms_id_fk": { "name": "audit_log_firm_id_firms_id_fk", "tableFrom": "audit_log", "tableTo": "firms", "columnsFrom": [ "firm_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.email_verifications": { "name": "email_verifications", "schema": "", "columns": { "token_hash": { "name": "token_hash", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "consumed_at": { "name": "consumed_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "email_verifications_user_id_users_id_fk": { "name": "email_verifications_user_id_users_id_fk", "tableFrom": "email_verifications", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.login_attempts": { "name": "login_attempts", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": true }, "ip": { "name": "ip", "type": "inet", "primaryKey": false, "notNull": false }, "success": { "name": "success", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "attempted_at": { "name": "attempted_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "login_attempts_email_idx": { "name": "login_attempts_email_idx", "columns": [ { "expression": "email", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "attempted_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "login_attempts_ip_idx": { "name": "login_attempts_ip_idx", "columns": [ { "expression": "ip", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "attempted_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.password_resets": { "name": "password_resets", "schema": "", "columns": { "token_hash": { "name": "token_hash", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "consumed_at": { "name": "consumed_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": { "password_resets_user_id_users_id_fk": { "name": "password_resets_user_id_users_id_fk", "tableFrom": "password_resets", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.sessions": { "name": "sessions", "schema": "", "columns": { "id": { "name": "id", "type": "text", "primaryKey": true, "notNull": true }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "ip": { "name": "ip", "type": "inet", "primaryKey": false, "notNull": false }, "user_agent": { "name": "user_agent", "type": "text", "primaryKey": false, "notNull": false }, "last_seen_at": { "name": "last_seen_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "sessions_user_idx": { "name": "sessions_user_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "sessions_expires_idx": { "name": "sessions_expires_idx", "columns": [ { "expression": "expires_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "sessions_user_id_users_id_fk": { "name": "sessions_user_id_users_id_fk", "tableFrom": "sessions", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.users": { "name": "users", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "firm_id": { "name": "firm_id", "type": "uuid", "primaryKey": false, "notNull": false }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": true }, "password_hash": { "name": "password_hash", "type": "text", "primaryKey": false, "notNull": true }, "full_name": { "name": "full_name", "type": "text", "primaryKey": false, "notNull": false }, "role": { "name": "role", "type": "text", "primaryKey": false, "notNull": true, "default": "'owner'" }, "is_superadmin": { "name": "is_superadmin", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "is_suspended": { "name": "is_suspended", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "email_verified_at": { "name": "email_verified_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "totp_secret_enc": { "name": "totp_secret_enc", "type": "text", "primaryKey": false, "notNull": false }, "totp_enabled": { "name": "totp_enabled", "type": "boolean", "primaryKey": false, "notNull": true, "default": false }, "last_seen_at": { "name": "last_seen_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "users_firm_idx": { "name": "users_firm_idx", "columns": [ { "expression": "firm_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "users_firm_id_firms_id_fk": { "name": "users_firm_id_firms_id_fk", "tableFrom": "users", "tableTo": "firms", "columnsFrom": [ "firm_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "users_email_unique": { "name": "users_email_unique", "nullsNotDistinct": false, "columns": [ "email" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.firms": { "name": "firms", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "plan": { "name": "plan", "type": "text", "primaryKey": false, "notNull": true, "default": "'starter'" }, "watermark_enabled": { "name": "watermark_enabled", "type": "boolean", "primaryKey": false, "notNull": true, "default": true }, "storage_bytes_used": { "name": "storage_bytes_used", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "stripe_customer_id": { "name": "stripe_customer_id", "type": "text", "primaryKey": false, "notNull": false }, "stripe_subscription_id": { "name": "stripe_subscription_id", "type": "text", "primaryKey": false, "notNull": false }, "trial_ends_at": { "name": "trial_ends_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.clients": { "name": "clients", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "firm_id": { "name": "firm_id", "type": "uuid", "primaryKey": false, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": false }, "phone": { "name": "phone", "type": "text", "primaryKey": false, "notNull": false }, "address": { "name": "address", "type": "text", "primaryKey": false, "notNull": false }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "clients_firm_idx": { "name": "clients_firm_idx", "columns": [ { "expression": "firm_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "clients_firm_id_firms_id_fk": { "name": "clients_firm_id_firms_id_fk", "tableFrom": "clients", "tableTo": "firms", "columnsFrom": [ "firm_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.cases": { "name": "cases", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "firm_id": { "name": "firm_id", "type": "uuid", "primaryKey": false, "notNull": true }, "client_id": { "name": "client_id", "type": "uuid", "primaryKey": false, "notNull": true }, "title": { "name": "title", "type": "text", "primaryKey": false, "notNull": true }, "case_number": { "name": "case_number", "type": "text", "primaryKey": false, "notNull": false }, "status": { "name": "status", "type": "text", "primaryKey": false, "notNull": true, "default": "'open'" }, "practice_area": { "name": "practice_area", "type": "text", "primaryKey": false, "notNull": false }, "description": { "name": "description", "type": "text", "primaryKey": false, "notNull": false }, "hourly_rate": { "name": "hourly_rate", "type": "numeric(10, 2)", "primaryKey": false, "notNull": false }, "opened_at": { "name": "opened_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "closed_at": { "name": "closed_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "cases_firm_idx": { "name": "cases_firm_idx", "columns": [ { "expression": "firm_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "cases_client_idx": { "name": "cases_client_idx", "columns": [ { "expression": "client_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "cases_status_idx": { "name": "cases_status_idx", "columns": [ { "expression": "firm_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "cases_firm_id_firms_id_fk": { "name": "cases_firm_id_firms_id_fk", "tableFrom": "cases", "tableTo": "firms", "columnsFrom": [ "firm_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "cases_client_id_clients_id_fk": { "name": "cases_client_id_clients_id_fk", "tableFrom": "cases", "tableTo": "clients", "columnsFrom": [ "client_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.time_entries": { "name": "time_entries", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "firm_id": { "name": "firm_id", "type": "uuid", "primaryKey": false, "notNull": true }, "case_id": { "name": "case_id", "type": "uuid", "primaryKey": false, "notNull": true }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "description": { "name": "description", "type": "text", "primaryKey": false, "notNull": true }, "started_at": { "name": "started_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "ended_at": { "name": "ended_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "minutes": { "name": "minutes", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 }, "rate": { "name": "rate", "type": "numeric(10, 2)", "primaryKey": false, "notNull": true }, "billable": { "name": "billable", "type": "boolean", "primaryKey": false, "notNull": true, "default": true }, "invoice_item_id": { "name": "invoice_item_id", "type": "uuid", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "time_firm_idx": { "name": "time_firm_idx", "columns": [ { "expression": "firm_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "time_case_idx": { "name": "time_case_idx", "columns": [ { "expression": "case_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "time_user_idx": { "name": "time_user_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "started_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "time_unbilled_idx": { "name": "time_unbilled_idx", "columns": [ { "expression": "firm_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "invoice_item_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "time_entries_firm_id_firms_id_fk": { "name": "time_entries_firm_id_firms_id_fk", "tableFrom": "time_entries", "tableTo": "firms", "columnsFrom": [ "firm_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "time_entries_case_id_cases_id_fk": { "name": "time_entries_case_id_cases_id_fk", "tableFrom": "time_entries", "tableTo": "cases", "columnsFrom": [ "case_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "time_entries_user_id_users_id_fk": { "name": "time_entries_user_id_users_id_fk", "tableFrom": "time_entries", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.documents": { "name": "documents", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "firm_id": { "name": "firm_id", "type": "uuid", "primaryKey": false, "notNull": true }, "case_id": { "name": "case_id", "type": "uuid", "primaryKey": false, "notNull": false }, "uploaded_by": { "name": "uploaded_by", "type": "uuid", "primaryKey": false, "notNull": false }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "storage_key": { "name": "storage_key", "type": "text", "primaryKey": false, "notNull": true }, "mime_type": { "name": "mime_type", "type": "text", "primaryKey": false, "notNull": true }, "size_bytes": { "name": "size_bytes", "type": "integer", "primaryKey": false, "notNull": true }, "version": { "name": "version", "type": "integer", "primaryKey": false, "notNull": true, "default": 1 }, "parent_id": { "name": "parent_id", "type": "uuid", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "docs_firm_idx": { "name": "docs_firm_idx", "columns": [ { "expression": "firm_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "docs_case_idx": { "name": "docs_case_idx", "columns": [ { "expression": "case_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "documents_firm_id_firms_id_fk": { "name": "documents_firm_id_firms_id_fk", "tableFrom": "documents", "tableTo": "firms", "columnsFrom": [ "firm_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "documents_case_id_cases_id_fk": { "name": "documents_case_id_cases_id_fk", "tableFrom": "documents", "tableTo": "cases", "columnsFrom": [ "case_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "documents_uploaded_by_users_id_fk": { "name": "documents_uploaded_by_users_id_fk", "tableFrom": "documents", "tableTo": "users", "columnsFrom": [ "uploaded_by" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.invoice_items": { "name": "invoice_items", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "invoice_id": { "name": "invoice_id", "type": "uuid", "primaryKey": false, "notNull": true }, "description": { "name": "description", "type": "text", "primaryKey": false, "notNull": true }, "quantity": { "name": "quantity", "type": "numeric(10, 2)", "primaryKey": false, "notNull": true, "default": "'1'" }, "rate": { "name": "rate", "type": "numeric(10, 2)", "primaryKey": false, "notNull": true }, "amount": { "name": "amount", "type": "numeric(12, 2)", "primaryKey": false, "notNull": true }, "sort_order": { "name": "sort_order", "type": "integer", "primaryKey": false, "notNull": true, "default": 0 } }, "indexes": { "invoice_items_invoice_idx": { "name": "invoice_items_invoice_idx", "columns": [ { "expression": "invoice_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "invoice_items_invoice_id_invoices_id_fk": { "name": "invoice_items_invoice_id_invoices_id_fk", "tableFrom": "invoice_items", "tableTo": "invoices", "columnsFrom": [ "invoice_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.invoices": { "name": "invoices", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "firm_id": { "name": "firm_id", "type": "uuid", "primaryKey": false, "notNull": true }, "client_id": { "name": "client_id", "type": "uuid", "primaryKey": false, "notNull": true }, "case_id": { "name": "case_id", "type": "uuid", "primaryKey": false, "notNull": false }, "number": { "name": "number", "type": "text", "primaryKey": false, "notNull": true }, "status": { "name": "status", "type": "text", "primaryKey": false, "notNull": true, "default": "'draft'" }, "subtotal": { "name": "subtotal", "type": "numeric(12, 2)", "primaryKey": false, "notNull": true, "default": "'0'" }, "tax_rate": { "name": "tax_rate", "type": "numeric(5, 2)", "primaryKey": false, "notNull": true, "default": "'0'" }, "total": { "name": "total", "type": "numeric(12, 2)", "primaryKey": false, "notNull": true, "default": "'0'" }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false }, "issued_at": { "name": "issued_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "due_at": { "name": "due_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "paid_at": { "name": "paid_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "updated_at": { "name": "updated_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "invoices_firm_idx": { "name": "invoices_firm_idx", "columns": [ { "expression": "firm_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "invoices_status_idx": { "name": "invoices_status_idx", "columns": [ { "expression": "firm_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "invoices_firm_id_firms_id_fk": { "name": "invoices_firm_id_firms_id_fk", "tableFrom": "invoices", "tableTo": "firms", "columnsFrom": [ "firm_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "invoices_client_id_clients_id_fk": { "name": "invoices_client_id_clients_id_fk", "tableFrom": "invoices", "tableTo": "clients", "columnsFrom": [ "client_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" }, "invoices_case_id_cases_id_fk": { "name": "invoices_case_id_cases_id_fk", "tableFrom": "invoices", "tableTo": "cases", "columnsFrom": [ "case_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.contact_messages": { "name": "contact_messages", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "full_name": { "name": "full_name", "type": "text", "primaryKey": false, "notNull": true }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": true }, "message": { "name": "message", "type": "text", "primaryKey": false, "notNull": true }, "ip": { "name": "ip", "type": "inet", "primaryKey": false, "notNull": false }, "resolved_at": { "name": "resolved_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.tool_usage": { "name": "tool_usage", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "tool": { "name": "tool", "type": "text", "primaryKey": false, "notNull": true }, "session_id": { "name": "session_id", "type": "text", "primaryKey": false, "notNull": false }, "ip": { "name": "ip", "type": "inet", "primaryKey": false, "notNull": false }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "tool_usage_tool_idx": { "name": "tool_usage_tool_idx", "columns": [ { "expression": "tool", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "created_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false } }, "enums": {}, "schemas": {}, "sequences": {}, "roles": {}, "policies": {}, "views": {}, "_meta": { "columns": {}, "schemas": {}, "tables": {} } }