{
  "tables": [
    {
      "name": "table1",
      "schemaName": "dbml_test",
      "note": {
        "value": ""
      }
    },
    {
      "name": "table3",
      "schemaName": "dbml_test",
      "note": {
        "value": ""
      }
    },
    {
      "name": "users",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "products",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "orders",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "order_items",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "all_string_types",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "all_default_values",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "user_define_data_types",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "table_with_comments",
      "schemaName": "public",
      "note": {
        "value": "This table stores information about various items. Such as: 'id', 'name', 'description'"
      }
    },
    {
      "name": "authors",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "books",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "table1",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "table2",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    },
    {
      "name": "table_with_composite_primary_and_unique_indexes",
      "schemaName": "public",
      "note": {
        "value": ""
      }
    }
  ],
  "fields": {
    "dbml_test.table1": [
      {
        "name": "id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "status",
        "type": {
          "type_name": "enum_type1",
          "schemaName": "dbml_test"
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "dbml_test.table3": [
      {
        "name": "id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "status",
        "type": {
          "type_name": "enum_type3",
          "schemaName": "dbml_test"
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.users": [
      {
        "name": "user_id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "username",
        "type": {
          "type_name": "varchar(50)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "email",
        "type": {
          "type_name": "varchar(100)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "password_hash",
        "type": {
          "type_name": "varchar(255)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "first_name",
        "type": {
          "type_name": "varchar(50)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "last_name",
        "type": {
          "type_name": "varchar(50)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "full_name",
        "type": {
          "type_name": "varchar(100)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "date_of_birth",
        "type": {
          "type_name": "date",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "created_at",
        "type": {
          "type_name": "timestamptz",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "CURRENT_TIMESTAMP"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "last_login",
        "type": {
          "type_name": "timestamptz",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "is_active",
        "type": {
          "type_name": "bool",
          "schemaName": null
        },
        "dbdefault": {
          "type": "boolean",
          "value": "true"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.products": [
      {
        "name": "product_id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "name",
        "type": {
          "type_name": "varchar(100)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "description",
        "type": {
          "type_name": "text",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "price",
        "type": {
          "type_name": "numeric(10,2)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "stock_quantity",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": {
          "type": "number",
          "value": "0"
        },
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "category",
        "type": {
          "type_name": "varchar(50)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "created_at",
        "type": {
          "type_name": "timestamptz",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "CURRENT_TIMESTAMP"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "updated_at",
        "type": {
          "type_name": "timestamptz",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "CURRENT_TIMESTAMP"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "is_available",
        "type": {
          "type_name": "bool",
          "schemaName": null
        },
        "dbdefault": {
          "type": "boolean",
          "value": "true"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.orders": [
      {
        "name": "order_id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "user_id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "order_date",
        "type": {
          "type_name": "timestamptz",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "CURRENT_TIMESTAMP"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "total_amount",
        "type": {
          "type_name": "numeric(12,2)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "status",
        "type": {
          "type_name": "varchar(20)",
          "schemaName": null
        },
        "dbdefault": {
          "type": "string",
          "value": "pending"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "shipping_address",
        "type": {
          "type_name": "text",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "billing_address",
        "type": {
          "type_name": "text",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.order_items": [
      {
        "name": "order_item_id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "order_id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "product_id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "quantity",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "unit_price",
        "type": {
          "type_name": "numeric(10,2)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.all_string_types": [
      {
        "name": "text_col",
        "type": {
          "type_name": "text",
          "schemaName": null
        },
        "dbdefault": {
          "type": "string",
          "value": "default_text"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "varchar_col",
        "type": {
          "type_name": "varchar(100)",
          "schemaName": null
        },
        "dbdefault": {
          "type": "string",
          "value": "default_varchar"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "char_col",
        "type": {
          "type_name": "bpchar(10)",
          "schemaName": null
        },
        "dbdefault": {
          "type": "string",
          "value": "default_char"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "character_varying_col",
        "type": {
          "type_name": "varchar(50)",
          "schemaName": null
        },
        "dbdefault": {
          "type": "string",
          "value": "default_character_varying"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "character_col",
        "type": {
          "type_name": "bpchar(5)",
          "schemaName": null
        },
        "dbdefault": {
          "type": "string",
          "value": "default_character"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "name_col",
        "type": {
          "type_name": "name",
          "schemaName": null
        },
        "dbdefault": {
          "type": "string",
          "value": "default_name"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "bpchar_col",
        "type": {
          "type_name": "bpchar(15)",
          "schemaName": null
        },
        "dbdefault": {
          "type": "string",
          "value": "default_bpchar"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "text_array_col",
        "type": {
          "type_name": "text[]",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "ARRAY['default_text1',  'default_text2']"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "json_col",
        "type": {
          "type_name": "json",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "{\"default_key\": \"default_value\"}"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "jsonb_col",
        "type": {
          "type_name": "jsonb",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "{\"default_key\": \"default_value\"}"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.all_default_values": [
      {
        "name": "id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "boolean_col",
        "type": {
          "type_name": "bool",
          "schemaName": null
        },
        "dbdefault": {
          "type": "boolean",
          "value": "true"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "integer_col",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": {
          "type": "number",
          "value": "42"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "numeric_col",
        "type": {
          "type_name": "numeric(10,2)",
          "schemaName": null
        },
        "dbdefault": {
          "type": "number",
          "value": "99.99"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "date_col",
        "type": {
          "type_name": "date",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "CURRENT_DATE"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "date_col_specific",
        "type": {
          "type_name": "date",
          "schemaName": null
        },
        "dbdefault": {
          "type": "string",
          "value": "2024-01-01"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "timestamp_col",
        "type": {
          "type_name": "timestamp",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "CURRENT_TIMESTAMP"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "timestamp_col_specific",
        "type": {
          "type_name": "timestamp",
          "schemaName": null
        },
        "dbdefault": {
          "type": "string",
          "value": "2024-01-01 12:00:00"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "date_plus_7_days",
        "type": {
          "type_name": "date",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "(CURRENT_DATE + '7 days'::interval)"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "date_minus_30_days",
        "type": {
          "type_name": "date",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "(CURRENT_DATE - '30 days'::interval)"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "timestamp_plus_1_hour",
        "type": {
          "type_name": "timestamp",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "(CURRENT_TIMESTAMP + '01:00:00'::interval)"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "timestamp_minus_15_minutes",
        "type": {
          "type_name": "timestamp",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "(CURRENT_TIMESTAMP - '00:15:00'::interval)"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.user_define_data_types": [
      {
        "name": "id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "name",
        "type": {
          "type_name": "varchar(50)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "gender",
        "type": {
          "type_name": "gender_type",
          "schemaName": "public"
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "age",
        "type": {
          "type_name": "int4range",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "height",
        "type": {
          "type_name": "float8",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "weight",
        "type": {
          "type_name": "float8",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.table_with_comments": [
      {
        "name": "id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": "Unique identifier for each item."
        }
      },
      {
        "name": "name",
        "type": {
          "type_name": "varchar(100)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": "Item's name."
        }
      },
      {
        "name": "description",
        "type": {
          "type_name": "text",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": "Item's description"
        }
      },
      {
        "name": "created_at",
        "type": {
          "type_name": "timestamptz",
          "schemaName": null
        },
        "dbdefault": {
          "type": "expression",
          "value": "CURRENT_TIMESTAMP"
        },
        "not_null": false,
        "increment": false,
        "note": {
          "value": "Timestamp when the item was created."
        }
      }
    ],
    "public.authors": [
      {
        "name": "authorid",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "nationalityid",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "authorname",
        "type": {
          "type_name": "varchar(100)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "birthyear",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.books": [
      {
        "name": "bookid",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "authorid",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "nationalityid",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "isbn",
        "type": {
          "type_name": "varchar(20)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "title",
        "type": {
          "type_name": "varchar(200)",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.table1": [
      {
        "name": "id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "status",
        "type": {
          "type_name": "enum_type1",
          "schemaName": "public"
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.table2": [
      {
        "name": "id",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": true,
        "note": {
          "value": ""
        }
      },
      {
        "name": "status",
        "type": {
          "type_name": "enum_type2",
          "schemaName": "public"
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ],
    "public.table_with_composite_primary_and_unique_indexes": [
      {
        "name": "col1",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "col2",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": true,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "col3",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      },
      {
        "name": "col4",
        "type": {
          "type_name": "int4",
          "schemaName": null
        },
        "dbdefault": null,
        "not_null": false,
        "increment": false,
        "note": {
          "value": ""
        }
      }
    ]
  },
  "refs": [
    {
      "name": "fk_authornationality",
      "endpoints": [
        {
          "tableName": "books",
          "schemaName": "public",
          "fieldNames": [
            "authorid",
            "nationalityid"
          ],
          "relation": "*"
        },
        {
          "tableName": "authors",
          "schemaName": "public",
          "fieldNames": [
            "authorid",
            "nationalityid"
          ],
          "relation": "1"
        }
      ],
      "onDelete": "CASCADE",
      "onUpdate": null
    },
    {
      "name": "fk_order",
      "endpoints": [
        {
          "tableName": "order_items",
          "schemaName": "public",
          "fieldNames": [
            "order_id"
          ],
          "relation": "*"
        },
        {
          "tableName": "orders",
          "schemaName": "public",
          "fieldNames": [
            "order_id"
          ],
          "relation": "1"
        }
      ],
      "onDelete": "CASCADE",
      "onUpdate": null
    },
    {
      "name": "fk_product",
      "endpoints": [
        {
          "tableName": "order_items",
          "schemaName": "public",
          "fieldNames": [
            "product_id"
          ],
          "relation": "*"
        },
        {
          "tableName": "products",
          "schemaName": "public",
          "fieldNames": [
            "product_id"
          ],
          "relation": "1"
        }
      ],
      "onDelete": "CASCADE",
      "onUpdate": null
    },
    {
      "name": "fk_user",
      "endpoints": [
        {
          "tableName": "orders",
          "schemaName": "public",
          "fieldNames": [
            "user_id"
          ],
          "relation": "*"
        },
        {
          "tableName": "users",
          "schemaName": "public",
          "fieldNames": [
            "user_id"
          ],
          "relation": "1"
        }
      ],
      "onDelete": "CASCADE",
      "onUpdate": null
    }
  ],
  "enums": [
    {
      "name": "enum_type1",
      "schemaName": "dbml_test",
      "values": [
        {
          "name": "value1"
        },
        {
          "name": "value2"
        }
      ]
    },
    {
      "name": "enum_type3",
      "schemaName": "dbml_test",
      "values": [
        {
          "name": "value4"
        },
        {
          "name": "value5"
        }
      ]
    },
    {
      "name": "enum_type1",
      "schemaName": "public",
      "values": [
        {
          "name": "value1"
        },
        {
          "name": "value2"
        }
      ]
    },
    {
      "name": "enum_type2",
      "schemaName": "public",
      "values": [
        {
          "name": "value1"
        },
        {
          "name": "value3"
        }
      ]
    },
    {
      "name": "gender_type",
      "schemaName": "public",
      "values": [
        {
          "name": "Male"
        },
        {
          "name": "Female"
        },
        {
          "name": "Other"
        }
      ]
    }
  ],
  "indexes": {
    "public.authors": [
      {
        "name": "authors_pkey",
        "type": "btree",
        "columns": [
          {
            "type": "column",
            "value": "authorid"
          },
          {
            "type": "column",
            "value": "nationalityid"
          }
        ],
        "pk": true,
        "unique": false
      }
    ],
    "public.order_items": [
      {
        "name": "uq_order_product",
        "type": "btree",
        "columns": [
          {
            "type": "column",
            "value": "order_id"
          },
          {
            "type": "column",
            "value": "product_id"
          }
        ],
        "pk": false,
        "unique": true
      },
      {
        "name": "idx_order_items_order_product",
        "type": "btree",
        "columns": [
          {
            "type": "column",
            "value": "order_id"
          },
          {
            "type": "column",
            "value": "product_id"
          }
        ],
        "pk": false,
        "unique": false
      }
    ],
    "public.orders": [
      {
        "name": "idx_orders_user_date",
        "type": "btree",
        "columns": [
          {
            "type": "column",
            "value": "user_id"
          },
          {
            "type": "column",
            "value": "order_date"
          }
        ],
        "pk": false,
        "unique": false
      }
    ],
    "public.products": [
      {
        "name": "idx_products_category",
        "type": "btree",
        "columns": [
          {
            "type": "column",
            "value": "category"
          }
        ],
        "pk": false,
        "unique": false
      }
    ],
    "public.table_with_composite_primary_and_unique_indexes": [
      {
        "name": "table_with_composite_primary_and_unique_indexes_pkey",
        "type": "btree",
        "columns": [
          {
            "type": "column",
            "value": "col1"
          },
          {
            "type": "column",
            "value": "col2"
          }
        ],
        "pk": true,
        "unique": false
      },
      {
        "name": "table_with_composite_primary_and_unique_indexes_col3_col4_key",
        "type": "btree",
        "columns": [
          {
            "type": "column",
            "value": "col3"
          },
          {
            "type": "column",
            "value": "col4"
          }
        ],
        "pk": false,
        "unique": true
      }
    ],
    "public.users": [
      {
        "name": "User Name",
        "type": "btree",
        "columns": [
          {
            "type": "column",
            "value": "full_name"
          }
        ],
        "pk": false,
        "unique": false
      },
      {
        "name": "idx_users_email",
        "type": "btree",
        "columns": [
          {
            "type": "column",
            "value": "email"
          }
        ],
        "pk": false,
        "unique": false
      },
      {
        "name": "users_is_active_lower_idx",
        "type": "btree",
        "columns": [
          {
            "type": "column",
            "value": "is_active"
          },
          {
            "type": "expression",
            "value": "lower((full_name)::text)"
          }
        ],
        "pk": false,
        "unique": false
      }
    ]
  },
  "tableConstraints": {
    "public.all_default_values": {
      "id": {
        "checks": [],
        "pk": true
      }
    },
    "public.books": {
      "bookid": {
        "checks": [],
        "pk": true
      },
      "isbn": {
        "checks": [],
        "unique": true
      }
    },
    "public.order_items": {
      "order_item_id": {
        "checks": [],
        "pk": true
      },
      "quantity": {
        "checks": [
          {
            "name": "chk_quantity_positive",
            "expression": "quantity > 0"
          }
        ]
      },
      "unit_price": {
        "checks": [
          {
            "name": "chk_unit_price_positive",
            "expression": "unit_price > (0)::numeric"
          }
        ]
      }
    },
    "public.orders": {
      "order_id": {
        "checks": [],
        "pk": true
      },
      "total_amount": {
        "checks": [
          {
            "name": "chk_total_amount_positive",
            "expression": "total_amount > (0)::numeric"
          }
        ]
      },
      "status": {
        "checks": [
          {
            "name": "chk_status",
            "expression": "(status)::text = ANY ((ARRAY['pending'::character varying, 'processing'::character varying, 'shipped'::character varying, 'delivered'::character varying, 'cancelled'::character varying])::text[])"
          }
        ]
      }
    },
    "public.products": {
      "product_id": {
        "checks": [],
        "pk": true
      },
      "price": {
        "checks": [
          {
            "name": "chk_price_positive",
            "expression": "price > (0)::numeric"
          }
        ]
      },
      "stock_quantity": {
        "checks": [
          {
            "name": "chk_stock_non_negative",
            "expression": "stock_quantity >= 0"
          }
        ]
      }
    },
    "public.table1": {
      "id": {
        "checks": [],
        "pk": true
      }
    },
    "dbml_test.table1": {
      "id": {
        "checks": [],
        "pk": true
      }
    },
    "public.table2": {
      "id": {
        "checks": [],
        "pk": true
      }
    },
    "dbml_test.table3": {
      "id": {
        "checks": [],
        "pk": true
      }
    },
    "public.table_with_comments": {
      "id": {
        "checks": [],
        "pk": true
      }
    },
    "public.user_define_data_types": {
      "id": {
        "checks": [],
        "pk": true
      },
      "height": {
        "checks": [
          {
            "name": "user_define_data_types_height_check",
            "expression": "height > (0)::double precision"
          }
        ]
      },
      "weight": {
        "checks": [
          {
            "name": "chk_positive_weight",
            "expression": "weight > (0)::double precision"
          }
        ]
      }
    },
    "public.users": {
      "user_id": {
        "checks": [],
        "pk": true
      },
      "email": {
        "checks": [
          {
            "name": "chk_email_format",
            "expression": "(email)::text ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}$'::text"
          }
        ],
        "unique": true
      },
      "username": {
        "checks": [],
        "unique": true
      },
      "date_of_birth": {
        "checks": [
          {
            "name": "chk_age",
            "expression": "date_of_birth <= (CURRENT_DATE - '13 years'::interval)"
          }
        ]
      }
    }
  },
  "checks": {
    "public.products": [
      {
        "name": "chk_created_at",
        "expression": "created_at <= updated_at"
      }
    ]
  }
}