{
  "version": "5",
  "dialect": "mysql",
  "id": "7a949cfb-3a9c-4f13-ad5c-2432ede16956",
  "prevId": "cbe2e9ba-8a5c-4b6e-9fd0-99cd64017103",
  "tables": {
    "annotations": {
      "name": "annotations",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "model_id": {
          "name": "model_id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "viewpoint_id": {
          "name": "viewpoint_id",
          "type": "int",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "type": {
          "name": "type",
          "type": "enum('pin','line','measure')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "points": {
          "name": "points",
          "type": "json",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "normal": {
          "name": "normal",
          "type": "json",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "color": {
          "name": "color",
          "type": "varchar(20)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'#ef4444'"
        },
        "label": {
          "name": "label",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "status": {
          "name": "status",
          "type": "enum('open','resolved')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'open'"
        },
        "created_by_user_id": {
          "name": "created_by_user_id",
          "type": "int",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "CURRENT_TIMESTAMP"
        }
      },
      "indexes": {
        "annotations_model_idx": {
          "name": "annotations_model_idx",
          "columns": [
            "model_id"
          ],
          "isUnique": false
        },
        "annotations_viewpoint_idx": {
          "name": "annotations_viewpoint_idx",
          "columns": [
            "viewpoint_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "annotations_model_id_models_id_fk": {
          "name": "annotations_model_id_models_id_fk",
          "tableFrom": "annotations",
          "tableTo": "models",
          "columnsFrom": [
            "model_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "annotations_viewpoint_id_viewpoints_id_fk": {
          "name": "annotations_viewpoint_id_viewpoints_id_fk",
          "tableFrom": "annotations",
          "tableTo": "viewpoints",
          "columnsFrom": [
            "viewpoint_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "annotations_created_by_user_id_users_id_fk": {
          "name": "annotations_created_by_user_id_users_id_fk",
          "tableFrom": "annotations",
          "tableTo": "users",
          "columnsFrom": [
            "created_by_user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "annotations_id": {
          "name": "annotations_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "client_sessions": {
      "name": "client_sessions",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "share_link_id": {
          "name": "share_link_id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "display_name": {
          "name": "display_name",
          "type": "varchar(100)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "CURRENT_TIMESTAMP"
        }
      },
      "indexes": {
        "client_sessions_share_link_idx": {
          "name": "client_sessions_share_link_idx",
          "columns": [
            "share_link_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "client_sessions_share_link_id_share_links_id_fk": {
          "name": "client_sessions_share_link_id_share_links_id_fk",
          "tableFrom": "client_sessions",
          "tableTo": "share_links",
          "columnsFrom": [
            "share_link_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "client_sessions_id": {
          "name": "client_sessions_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "clients": {
      "name": "clients",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "company_id": {
          "name": "company_id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "name": {
          "name": "name",
          "type": "varchar(150)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "contact_name": {
          "name": "contact_name",
          "type": "varchar(150)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "email": {
          "name": "email",
          "type": "varchar(190)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "phone": {
          "name": "phone",
          "type": "varchar(40)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "notes": {
          "name": "notes",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "CURRENT_TIMESTAMP"
        }
      },
      "indexes": {
        "clients_company_idx": {
          "name": "clients_company_idx",
          "columns": [
            "company_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "clients_company_id_companies_id_fk": {
          "name": "clients_company_id_companies_id_fk",
          "tableFrom": "clients",
          "tableTo": "companies",
          "columnsFrom": [
            "company_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "clients_id": {
          "name": "clients_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "comments": {
      "name": "comments",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "annotation_id": {
          "name": "annotation_id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "author_type": {
          "name": "author_type",
          "type": "enum('staff','client')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "author_user_id": {
          "name": "author_user_id",
          "type": "int",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "author_client_session_id": {
          "name": "author_client_session_id",
          "type": "int",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "body": {
          "name": "body",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "staff_read_at": {
          "name": "staff_read_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "CURRENT_TIMESTAMP"
        }
      },
      "indexes": {
        "comments_annotation_idx": {
          "name": "comments_annotation_idx",
          "columns": [
            "annotation_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "comments_annotation_id_annotations_id_fk": {
          "name": "comments_annotation_id_annotations_id_fk",
          "tableFrom": "comments",
          "tableTo": "annotations",
          "columnsFrom": [
            "annotation_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "comments_author_user_id_users_id_fk": {
          "name": "comments_author_user_id_users_id_fk",
          "tableFrom": "comments",
          "tableTo": "users",
          "columnsFrom": [
            "author_user_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        },
        "comments_author_client_session_id_client_sessions_id_fk": {
          "name": "comments_author_client_session_id_client_sessions_id_fk",
          "tableFrom": "comments",
          "tableTo": "client_sessions",
          "columnsFrom": [
            "author_client_session_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "comments_id": {
          "name": "comments_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "companies": {
      "name": "companies",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "name": {
          "name": "name",
          "type": "varchar(150)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "logo_path": {
          "name": "logo_path",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "CURRENT_TIMESTAMP"
        }
      },
      "indexes": {},
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "companies_id": {
          "name": "companies_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "models": {
      "name": "models",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "project_id": {
          "name": "project_id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "version": {
          "name": "version",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "label": {
          "name": "label",
          "type": "varchar(150)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "file_path": {
          "name": "file_path",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "file_size": {
          "name": "file_size",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "triangle_count": {
          "name": "triangle_count",
          "type": "int",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "texture_info": {
          "name": "texture_info",
          "type": "json",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "is_active": {
          "name": "is_active",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": false
        },
        "uploaded_by": {
          "name": "uploaded_by",
          "type": "int",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "CURRENT_TIMESTAMP"
        }
      },
      "indexes": {
        "models_project_version_unique": {
          "name": "models_project_version_unique",
          "columns": [
            "project_id",
            "version"
          ],
          "isUnique": true
        }
      },
      "foreignKeys": {
        "models_project_id_projects_id_fk": {
          "name": "models_project_id_projects_id_fk",
          "tableFrom": "models",
          "tableTo": "projects",
          "columnsFrom": [
            "project_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "models_uploaded_by_users_id_fk": {
          "name": "models_uploaded_by_users_id_fk",
          "tableFrom": "models",
          "tableTo": "users",
          "columnsFrom": [
            "uploaded_by"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "set null",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "models_id": {
          "name": "models_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "projects": {
      "name": "projects",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "company_id": {
          "name": "company_id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "client_id": {
          "name": "client_id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "name": {
          "name": "name",
          "type": "varchar(200)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "description": {
          "name": "description",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "status": {
          "name": "status",
          "type": "enum('draft','presented','approved','archived')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'draft'"
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "CURRENT_TIMESTAMP"
        },
        "updated_at": {
          "name": "updated_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "CURRENT_TIMESTAMP"
        }
      },
      "indexes": {
        "projects_company_idx": {
          "name": "projects_company_idx",
          "columns": [
            "company_id"
          ],
          "isUnique": false
        },
        "projects_client_idx": {
          "name": "projects_client_idx",
          "columns": [
            "client_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "projects_company_id_companies_id_fk": {
          "name": "projects_company_id_companies_id_fk",
          "tableFrom": "projects",
          "tableTo": "companies",
          "columnsFrom": [
            "company_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "projects_client_id_clients_id_fk": {
          "name": "projects_client_id_clients_id_fk",
          "tableFrom": "projects",
          "tableTo": "clients",
          "columnsFrom": [
            "client_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "restrict",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "projects_id": {
          "name": "projects_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "share_links": {
      "name": "share_links",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "project_id": {
          "name": "project_id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "token": {
          "name": "token",
          "type": "varchar(64)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "password_hash": {
          "name": "password_hash",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "expires_at": {
          "name": "expires_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "is_active": {
          "name": "is_active",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": true
        },
        "last_accessed_at": {
          "name": "last_accessed_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "CURRENT_TIMESTAMP"
        }
      },
      "indexes": {
        "share_links_token_unique": {
          "name": "share_links_token_unique",
          "columns": [
            "token"
          ],
          "isUnique": true
        },
        "share_links_project_idx": {
          "name": "share_links_project_idx",
          "columns": [
            "project_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "share_links_project_id_projects_id_fk": {
          "name": "share_links_project_id_projects_id_fk",
          "tableFrom": "share_links",
          "tableTo": "projects",
          "columnsFrom": [
            "project_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "share_links_id": {
          "name": "share_links_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "users": {
      "name": "users",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "company_id": {
          "name": "company_id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "name": {
          "name": "name",
          "type": "varchar(150)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "email": {
          "name": "email",
          "type": "varchar(190)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "password_hash": {
          "name": "password_hash",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "role": {
          "name": "role",
          "type": "enum('admin','staff')",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'staff'"
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "CURRENT_TIMESTAMP"
        }
      },
      "indexes": {
        "users_email_unique": {
          "name": "users_email_unique",
          "columns": [
            "email"
          ],
          "isUnique": true
        },
        "users_company_idx": {
          "name": "users_company_idx",
          "columns": [
            "company_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "users_company_id_companies_id_fk": {
          "name": "users_company_id_companies_id_fk",
          "tableFrom": "users",
          "tableTo": "companies",
          "columnsFrom": [
            "company_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "users_id": {
          "name": "users_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    },
    "viewpoints": {
      "name": "viewpoints",
      "columns": {
        "id": {
          "name": "id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": true
        },
        "model_id": {
          "name": "model_id",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "title": {
          "name": "title",
          "type": "varchar(150)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "description": {
          "name": "description",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "camera_position": {
          "name": "camera_position",
          "type": "json",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "camera_target": {
          "name": "camera_target",
          "type": "json",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "sort_order": {
          "name": "sort_order",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": 0
        }
      },
      "indexes": {
        "viewpoints_model_idx": {
          "name": "viewpoints_model_idx",
          "columns": [
            "model_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "viewpoints_model_id_models_id_fk": {
          "name": "viewpoints_model_id_models_id_fk",
          "tableFrom": "viewpoints",
          "tableTo": "models",
          "columnsFrom": [
            "model_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "viewpoints_id": {
          "name": "viewpoints_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    }
  },
  "views": {},
  "_meta": {
    "schemas": {},
    "tables": {},
    "columns": {}
  },
  "internal": {
    "tables": {},
    "indexes": {}
  }
}