{ "id": "c11e4cb2-a11c-4fa0-a510-3684909dcd87", "prevId": "af5484ea-7caf-4bdf-9aec-5d6ff568b1ed", "version": "7", "dialect": "postgresql", "tables": { "public.email_verification_tokens": { "name": "email_verification_tokens", "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": true }, "token_hash": { "name": "token_hash", "type": "text", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "used_at": { "name": "used_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": { "email_verification_tokens_user_id_idx": { "name": "email_verification_tokens_user_id_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "email_verification_tokens_user_id_users_id_fk": { "name": "email_verification_tokens_user_id_users_id_fk", "tableFrom": "email_verification_tokens", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "email_verification_tokens_token_hash_unique": { "name": "email_verification_tokens_token_hash_unique", "nullsNotDistinct": false, "columns": [ "token_hash" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.password_reset_tokens": { "name": "password_reset_tokens", "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": true }, "token_hash": { "name": "token_hash", "type": "text", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "used_at": { "name": "used_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": { "password_reset_tokens_user_id_idx": { "name": "password_reset_tokens_user_id_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "password_reset_tokens_user_id_users_id_fk": { "name": "password_reset_tokens_user_id_users_id_fk", "tableFrom": "password_reset_tokens", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "password_reset_tokens_token_hash_unique": { "name": "password_reset_tokens_token_hash_unique", "nullsNotDistinct": false, "columns": [ "token_hash" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.refresh_tokens": { "name": "refresh_tokens", "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": true }, "token_hash": { "name": "token_hash", "type": "text", "primaryKey": false, "notNull": true }, "family_id": { "name": "family_id", "type": "uuid", "primaryKey": false, "notNull": true }, "expires_at": { "name": "expires_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "revoked_at": { "name": "revoked_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()" }, "user_agent": { "name": "user_agent", "type": "text", "primaryKey": false, "notNull": false }, "ip": { "name": "ip", "type": "inet", "primaryKey": false, "notNull": false } }, "indexes": { "refresh_tokens_user_id_idx": { "name": "refresh_tokens_user_id_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "refresh_tokens_family_id_idx": { "name": "refresh_tokens_family_id_idx", "columns": [ { "expression": "family_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "refresh_tokens_user_id_users_id_fk": { "name": "refresh_tokens_user_id_users_id_fk", "tableFrom": "refresh_tokens", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "refresh_tokens_token_hash_unique": { "name": "refresh_tokens_token_hash_unique", "nullsNotDistinct": false, "columns": [ "token_hash" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.users": { "name": "users", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": true }, "password_hash": { "name": "password_hash", "type": "text", "primaryKey": false, "notNull": true }, "role": { "name": "role", "type": "user_role", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'customer'" }, "first_name": { "name": "first_name", "type": "text", "primaryKey": false, "notNull": true }, "last_name": { "name": "last_name", "type": "text", "primaryKey": false, "notNull": true }, "company_name": { "name": "company_name", "type": "text", "primaryKey": false, "notNull": false }, "vat_number": { "name": "vat_number", "type": "text", "primaryKey": false, "notNull": false }, "medusa_customer_id": { "name": "medusa_customer_id", "type": "text", "primaryKey": false, "notNull": false }, "email_verified_at": { "name": "email_verified_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()" }, "disabled_at": { "name": "disabled_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false } }, "indexes": { "users_email_lower_key": { "name": "users_email_lower_key", "columns": [ { "expression": "lower(\"email\")", "asc": true, "isExpression": true, "nulls": "last" } ], "isUnique": true, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": { "users_medusa_customer_id_unique": { "name": "users_medusa_customer_id_unique", "nullsNotDistinct": false, "columns": [ "medusa_customer_id" ] } }, "policies": {}, "checkConstraints": { "users_email_lowercase": { "name": "users_email_lowercase", "value": "\"users\".\"email\" = lower(\"users\".\"email\")" } }, "isRLSEnabled": false }, "public.blog_categories": { "name": "blog_categories", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "slug": { "name": "slug", "type": "text", "primaryKey": false, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "description": { "name": "description", "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": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": { "blog_categories_slug_unique": { "name": "blog_categories_slug_unique", "nullsNotDistinct": false, "columns": [ "slug" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.blog_posts": { "name": "blog_posts", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "slug": { "name": "slug", "type": "text", "primaryKey": false, "notNull": true }, "title": { "name": "title", "type": "text", "primaryKey": false, "notNull": true }, "excerpt": { "name": "excerpt", "type": "text", "primaryKey": false, "notNull": false }, "content_md": { "name": "content_md", "type": "text", "primaryKey": false, "notNull": true, "default": "''" }, "cover_path": { "name": "cover_path", "type": "text", "primaryKey": false, "notNull": false }, "status": { "name": "status", "type": "blog_post_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'draft'" }, "published_at": { "name": "published_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "seo_title": { "name": "seo_title", "type": "text", "primaryKey": false, "notNull": false }, "seo_description": { "name": "seo_description", "type": "text", "primaryKey": false, "notNull": false }, "category_id": { "name": "category_id", "type": "uuid", "primaryKey": false, "notNull": false }, "author_id": { "name": "author_id", "type": "uuid", "primaryKey": false, "notNull": false }, "search_vector": { "name": "search_vector", "type": "tsvector", "primaryKey": false, "notNull": false, "generated": { "as": "setweight(to_tsvector('italian', immutable_unaccent(coalesce(title, ''))), 'A') || setweight(to_tsvector('italian', immutable_unaccent(coalesce(excerpt, ''))), 'B') || setweight(to_tsvector('italian', immutable_unaccent(coalesce(content_md, ''))), 'C')", "type": "stored" } }, "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": { "blog_posts_search_vector_gin": { "name": "blog_posts_search_vector_gin", "columns": [ { "expression": "search_vector", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "gin", "with": {} }, "blog_posts_published_idx": { "name": "blog_posts_published_idx", "columns": [ { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "published_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "blog_posts_category_id_idx": { "name": "blog_posts_category_id_idx", "columns": [ { "expression": "category_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "blog_posts_category_id_blog_categories_id_fk": { "name": "blog_posts_category_id_blog_categories_id_fk", "tableFrom": "blog_posts", "tableTo": "blog_categories", "columnsFrom": [ "category_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" }, "blog_posts_author_id_users_id_fk": { "name": "blog_posts_author_id_users_id_fk", "tableFrom": "blog_posts", "tableTo": "users", "columnsFrom": [ "author_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "blog_posts_slug_unique": { "name": "blog_posts_slug_unique", "nullsNotDistinct": false, "columns": [ "slug" ] } }, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.consents": { "name": "consents", "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 }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": false }, "type": { "name": "type", "type": "consent_type", "typeSchema": "public", "primaryKey": false, "notNull": true }, "version": { "name": "version", "type": "text", "primaryKey": false, "notNull": true }, "source": { "name": "source", "type": "text", "primaryKey": false, "notNull": false }, "accepted_at": { "name": "accepted_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "revoked_at": { "name": "revoked_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "ip": { "name": "ip", "type": "inet", "primaryKey": false, "notNull": false } }, "indexes": { "consents_user_id_idx": { "name": "consents_user_id_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "type", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "consents_email_idx": { "name": "consents_email_idx", "columns": [ { "expression": "email", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "type", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "consents_user_id_users_id_fk": { "name": "consents_user_id_users_id_fk", "tableFrom": "consents", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": { "consents_subject_present": { "name": "consents_subject_present", "value": "num_nonnulls(\"consents\".\"user_id\", \"consents\".\"email\") >= 1" }, "consents_email_lowercase": { "name": "consents_email_lowercase", "value": "\"consents\".\"email\" = lower(\"consents\".\"email\")" } }, "isRLSEnabled": false }, "public.contact_requests": { "name": "contact_requests", "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 }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": true }, "phone": { "name": "phone", "type": "text", "primaryKey": false, "notNull": false }, "subject": { "name": "subject", "type": "text", "primaryKey": false, "notNull": false }, "message": { "name": "message", "type": "text", "primaryKey": false, "notNull": true }, "status": { "name": "status", "type": "contact_request_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'new'" }, "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": { "contact_requests_status_idx": { "name": "contact_requests_status_idx", "columns": [ { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "created_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "contact_requests_user_id_users_id_fk": { "name": "contact_requests_user_id_users_id_fk", "tableFrom": "contact_requests", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": { "contact_requests_email_lowercase": { "name": "contact_requests_email_lowercase", "value": "\"contact_requests\".\"email\" = lower(\"contact_requests\".\"email\")" } }, "isRLSEnabled": false }, "public.documents": { "name": "documents", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "title": { "name": "title", "type": "text", "primaryKey": false, "notNull": true }, "category": { "name": "category", "type": "text", "primaryKey": false, "notNull": false }, "file_path": { "name": "file_path", "type": "text", "primaryKey": false, "notNull": true }, "mime_type": { "name": "mime_type", "type": "text", "primaryKey": false, "notNull": true }, "size_bytes": { "name": "size_bytes", "type": "bigint", "primaryKey": false, "notNull": true }, "visibility": { "name": "visibility", "type": "document_visibility", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'admin'" }, "product_ref": { "name": "product_ref", "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": { "documents_visibility_idx": { "name": "documents_visibility_idx", "columns": [ { "expression": "visibility", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "documents_product_ref_idx": { "name": "documents_product_ref_idx", "columns": [ { "expression": "product_ref", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.installer_profiles": { "name": "installer_profiles", "schema": "", "columns": { "user_id": { "name": "user_id", "type": "uuid", "primaryKey": true, "notNull": true }, "business_name": { "name": "business_name", "type": "text", "primaryKey": false, "notNull": true }, "vat_number": { "name": "vat_number", "type": "text", "primaryKey": false, "notNull": false }, "phone": { "name": "phone", "type": "text", "primaryKey": false, "notNull": false }, "address": { "name": "address", "type": "text", "primaryKey": false, "notNull": false }, "location": { "name": "location", "type": "geography(Point,4326)", "primaryKey": false, "notNull": false }, "service_radius_km": { "name": "service_radius_km", "type": "integer", "primaryKey": false, "notNull": true, "default": 50 }, "certifications": { "name": "certifications", "type": "text[]", "primaryKey": false, "notNull": true, "default": "'{}'::text[]" }, "status": { "name": "status", "type": "installer_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'pending'" }, "approved_at": { "name": "approved_at", "type": "timestamp with time zone", "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": { "installer_profiles_location_gist": { "name": "installer_profiles_location_gist", "columns": [ { "expression": "location", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "gist", "with": {} }, "installer_profiles_status_idx": { "name": "installer_profiles_status_idx", "columns": [ { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "installer_profiles_user_id_users_id_fk": { "name": "installer_profiles_user_id_users_id_fk", "tableFrom": "installer_profiles", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": { "installer_profiles_radius_positive": { "name": "installer_profiles_radius_positive", "value": "\"installer_profiles\".\"service_radius_km\" > 0" } }, "isRLSEnabled": false }, "public.quote_requests": { "name": "quote_requests", "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 }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": true }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "phone": { "name": "phone", "type": "text", "primaryKey": false, "notNull": false }, "province": { "name": "province", "type": "text", "primaryKey": false, "notNull": false }, "configurator_input": { "name": "configurator_input", "type": "jsonb", "primaryKey": false, "notNull": true }, "configurator_output": { "name": "configurator_output", "type": "jsonb", "primaryKey": false, "notNull": false }, "status": { "name": "status", "type": "quote_request_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'new'" }, "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": { "quote_requests_email_idx": { "name": "quote_requests_email_idx", "columns": [ { "expression": "email", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "quote_requests_user_id_idx": { "name": "quote_requests_user_id_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "quote_requests_status_idx": { "name": "quote_requests_status_idx", "columns": [ { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "created_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "quote_requests_user_id_users_id_fk": { "name": "quote_requests_user_id_users_id_fk", "tableFrom": "quote_requests", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": { "quote_requests_email_lowercase": { "name": "quote_requests_email_lowercase", "value": "\"quote_requests\".\"email\" = lower(\"quote_requests\".\"email\")" } }, "isRLSEnabled": false }, "public.quotes": { "name": "quotes", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "quote_request_id": { "name": "quote_request_id", "type": "uuid", "primaryKey": false, "notNull": false }, "user_id": { "name": "user_id", "type": "uuid", "primaryKey": false, "notNull": true }, "year": { "name": "year", "type": "smallint", "primaryKey": false, "notNull": true }, "seq": { "name": "seq", "type": "integer", "primaryKey": false, "notNull": true }, "number": { "name": "number", "type": "text", "primaryKey": false, "notNull": true }, "title": { "name": "title", "type": "text", "primaryKey": false, "notNull": true }, "status": { "name": "status", "type": "quote_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'draft'" }, "amount_cents": { "name": "amount_cents", "type": "bigint", "primaryKey": false, "notNull": true }, "pdf_document_id": { "name": "pdf_document_id", "type": "uuid", "primaryKey": false, "notNull": false }, "valid_until": { "name": "valid_until", "type": "date", "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": { "quotes_user_id_idx": { "name": "quotes_user_id_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "quotes_quote_request_id_quote_requests_id_fk": { "name": "quotes_quote_request_id_quote_requests_id_fk", "tableFrom": "quotes", "tableTo": "quote_requests", "columnsFrom": [ "quote_request_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" }, "quotes_user_id_users_id_fk": { "name": "quotes_user_id_users_id_fk", "tableFrom": "quotes", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" }, "quotes_pdf_document_id_documents_id_fk": { "name": "quotes_pdf_document_id_documents_id_fk", "tableFrom": "quotes", "tableTo": "documents", "columnsFrom": [ "pdf_document_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "quotes_number_unique": { "name": "quotes_number_unique", "nullsNotDistinct": false, "columns": [ "number" ] }, "quotes_year_seq_key": { "name": "quotes_year_seq_key", "nullsNotDistinct": false, "columns": [ "year", "seq" ] } }, "policies": {}, "checkConstraints": { "quotes_amount_non_negative": { "name": "quotes_amount_non_negative", "value": "\"quotes\".\"amount_cents\" >= 0" } }, "isRLSEnabled": false }, "public.showroom_bookings": { "name": "showroom_bookings", "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 }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": true }, "email": { "name": "email", "type": "text", "primaryKey": false, "notNull": true }, "phone": { "name": "phone", "type": "text", "primaryKey": false, "notNull": false }, "requested_at": { "name": "requested_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true }, "people": { "name": "people", "type": "smallint", "primaryKey": false, "notNull": true, "default": 1 }, "notes": { "name": "notes", "type": "text", "primaryKey": false, "notNull": false }, "status": { "name": "status", "type": "showroom_booking_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'requested'" }, "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": { "showroom_bookings_requested_at_idx": { "name": "showroom_bookings_requested_at_idx", "columns": [ { "expression": "requested_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "showroom_bookings_user_id_users_id_fk": { "name": "showroom_bookings_user_id_users_id_fk", "tableFrom": "showroom_bookings", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "set null", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": { "showroom_bookings_email_lowercase": { "name": "showroom_bookings_email_lowercase", "value": "\"showroom_bookings\".\"email\" = lower(\"showroom_bookings\".\"email\")" }, "showroom_bookings_people_positive": { "name": "showroom_bookings_people_positive", "value": "\"showroom_bookings\".\"people\" > 0" } }, "isRLSEnabled": false }, "public.ticket_messages": { "name": "ticket_messages", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true, "default": "gen_random_uuid()" }, "ticket_id": { "name": "ticket_id", "type": "uuid", "primaryKey": false, "notNull": true }, "author_id": { "name": "author_id", "type": "uuid", "primaryKey": false, "notNull": true }, "body": { "name": "body", "type": "text", "primaryKey": false, "notNull": true }, "created_at": { "name": "created_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" } }, "indexes": { "ticket_messages_ticket_id_idx": { "name": "ticket_messages_ticket_id_idx", "columns": [ { "expression": "ticket_id", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "created_at", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "ticket_messages_ticket_id_tickets_id_fk": { "name": "ticket_messages_ticket_id_tickets_id_fk", "tableFrom": "ticket_messages", "tableTo": "tickets", "columnsFrom": [ "ticket_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "ticket_messages_author_id_users_id_fk": { "name": "ticket_messages_author_id_users_id_fk", "tableFrom": "ticket_messages", "tableTo": "users", "columnsFrom": [ "author_id" ], "columnsTo": [ "id" ], "onDelete": "restrict", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.tickets": { "name": "tickets", "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": true }, "subject": { "name": "subject", "type": "text", "primaryKey": false, "notNull": true }, "status": { "name": "status", "type": "ticket_status", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'open'" }, "priority": { "name": "priority", "type": "ticket_priority", "typeSchema": "public", "primaryKey": false, "notNull": true, "default": "'normal'" }, "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": { "tickets_user_id_idx": { "name": "tickets_user_id_idx", "columns": [ { "expression": "user_id", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} }, "tickets_status_idx": { "name": "tickets_status_idx", "columns": [ { "expression": "status", "isExpression": false, "asc": true, "nulls": "last" }, { "expression": "priority", "isExpression": false, "asc": true, "nulls": "last" } ], "isUnique": false, "concurrently": false, "method": "btree", "with": {} } }, "foreignKeys": { "tickets_user_id_users_id_fk": { "name": "tickets_user_id_users_id_fk", "tableFrom": "tickets", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false }, "public.webhook_events": { "name": "webhook_events", "schema": "", "columns": { "id": { "name": "id", "type": "uuid", "primaryKey": true, "notNull": true }, "event": { "name": "event", "type": "text", "primaryKey": false, "notNull": true }, "payload": { "name": "payload", "type": "jsonb", "primaryKey": false, "notNull": true }, "received_at": { "name": "received_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": true, "default": "now()" }, "processed_at": { "name": "processed_at", "type": "timestamp with time zone", "primaryKey": false, "notNull": false }, "error": { "name": "error", "type": "text", "primaryKey": false, "notNull": false } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {}, "policies": {}, "checkConstraints": {}, "isRLSEnabled": false } }, "enums": { "public.user_role": { "name": "user_role", "schema": "public", "values": [ "customer", "company", "installer", "admin" ] }, "public.blog_post_status": { "name": "blog_post_status", "schema": "public", "values": [ "draft", "published" ] }, "public.consent_type": { "name": "consent_type", "schema": "public", "values": [ "privacy", "marketing" ] }, "public.contact_request_status": { "name": "contact_request_status", "schema": "public", "values": [ "new", "in_progress", "closed" ] }, "public.document_visibility": { "name": "document_visibility", "schema": "public", "values": [ "public", "customer", "installer", "admin" ] }, "public.installer_status": { "name": "installer_status", "schema": "public", "values": [ "pending", "approved", "rejected" ] }, "public.quote_request_status": { "name": "quote_request_status", "schema": "public", "values": [ "new", "contacted", "converted", "closed" ] }, "public.quote_status": { "name": "quote_status", "schema": "public", "values": [ "draft", "sent", "accepted", "rejected", "expired" ] }, "public.showroom_booking_status": { "name": "showroom_booking_status", "schema": "public", "values": [ "requested", "confirmed", "cancelled", "completed" ] }, "public.ticket_priority": { "name": "ticket_priority", "schema": "public", "values": [ "low", "normal", "high", "urgent" ] }, "public.ticket_status": { "name": "ticket_status", "schema": "public", "values": [ "open", "in_progress", "waiting_customer", "closed" ] } }, "schemas": {}, "sequences": {}, "roles": {}, "policies": {}, "views": {}, "_meta": { "columns": {}, "schemas": {}, "tables": {} } }