{
  "version": "5",
  "dialect": "mysql",
  "id": "04a872da-abbc-425b-b89a-ecd945f85997",
  "prevId": "00000000-0000-0000-0000-000000000000",
  "tables": {
    "admin_users": {
      "name": "admin_users",
      "columns": {
        "user_id": {
          "name": "user_id",
          "type": "varchar(191)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "role": {
          "name": "role",
          "type": "varchar(20)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "'admin'"
        },
        "is_active": {
          "name": "is_active",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": true
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(CURRENT_TIMESTAMP(3))"
        },
        "created_by": {
          "name": "created_by",
          "type": "varchar(191)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        }
      },
      "indexes": {
        "admin_users_created_by_idx": {
          "name": "admin_users_created_by_idx",
          "columns": [
            "created_by"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "admin_users_user_id": {
          "name": "admin_users_user_id",
          "columns": [
            "user_id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {
        "admin_users_role_check": {
          "name": "admin_users_role_check",
          "value": "`admin_users`.`role` in ('admin')"
        },
        "admin_users_user_id_not_blank_check": {
          "name": "admin_users_user_id_not_blank_check",
          "value": "trim(`admin_users`.`user_id`) <> ''"
        },
        "admin_users_created_by_not_blank_check": {
          "name": "admin_users_created_by_not_blank_check",
          "value": "`admin_users`.`created_by` is null or trim(`admin_users`.`created_by`) <> ''"
        }
      }
    },
    "answers": {
      "name": "answers",
      "columns": {
        "submission_id": {
          "name": "submission_id",
          "type": "char(36)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "questionnaire_id": {
          "name": "questionnaire_id",
          "type": "char(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "question_id": {
          "name": "question_id",
          "type": "char(36)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "value": {
          "name": "value",
          "type": "tinyint",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        }
      },
      "indexes": {
        "answers_submission_id_idx": {
          "name": "answers_submission_id_idx",
          "columns": [
            "submission_id"
          ],
          "isUnique": false
        },
        "answers_question_id_idx": {
          "name": "answers_question_id_idx",
          "columns": [
            "question_id"
          ],
          "isUnique": false
        },
        "answers_questionnaire_id_idx": {
          "name": "answers_questionnaire_id_idx",
          "columns": [
            "questionnaire_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "answers_submission_questionnaire_fk": {
          "name": "answers_submission_questionnaire_fk",
          "tableFrom": "answers",
          "tableTo": "submissions",
          "columnsFrom": [
            "submission_id",
            "questionnaire_id"
          ],
          "columnsTo": [
            "id",
            "questionnaire_id"
          ],
          "onDelete": "cascade",
          "onUpdate": "no action"
        },
        "answers_question_questionnaire_fk": {
          "name": "answers_question_questionnaire_fk",
          "tableFrom": "answers",
          "tableTo": "questions",
          "columnsFrom": [
            "question_id",
            "questionnaire_id"
          ],
          "columnsTo": [
            "id",
            "questionnaire_id"
          ],
          "onDelete": "restrict",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "answers_pkey": {
          "name": "answers_pkey",
          "columns": [
            "submission_id",
            "question_id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {
        "answers_value_check": {
          "name": "answers_value_check",
          "value": "`answers`.`value` in (0, 1, 2, 3)"
        }
      }
    },
    "diagnostic_spaces": {
      "name": "diagnostic_spaces",
      "columns": {
        "id": {
          "name": "id",
          "type": "char(36)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "public_code": {
          "name": "public_code",
          "type": "varchar(20)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "private_token_hmac": {
          "name": "private_token_hmac",
          "type": "varchar(128)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "owner_user_id": {
          "name": "owner_user_id",
          "type": "varchar(191)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "results_token_hash": {
          "name": "results_token_hash",
          "type": "varchar(128)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "results_token_encrypted": {
          "name": "results_token_encrypted",
          "type": "text",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "results_token_enabled": {
          "name": "results_token_enabled",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": true
        },
        "results_token_created_at": {
          "name": "results_token_created_at",
          "type": "datetime(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(CURRENT_TIMESTAMP(3))"
        },
        "results_token_expires_at": {
          "name": "results_token_expires_at",
          "type": "datetime(3)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        },
        "questionnaire_id": {
          "name": "questionnaire_id",
          "type": "char(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "is_active": {
          "name": "is_active",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": true
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(CURRENT_TIMESTAMP(3))"
        },
        "closed_at": {
          "name": "closed_at",
          "type": "datetime(3)",
          "primaryKey": false,
          "notNull": false,
          "autoincrement": false
        }
      },
      "indexes": {
        "diagnostic_spaces_public_code_key": {
          "name": "diagnostic_spaces_public_code_key",
          "columns": [
            "public_code"
          ],
          "isUnique": true
        },
        "diagnostic_spaces_id_questionnaire_unique": {
          "name": "diagnostic_spaces_id_questionnaire_unique",
          "columns": [
            "id",
            "questionnaire_id"
          ],
          "isUnique": true
        },
        "diagnostic_spaces_owner_user_id_unique_idx": {
          "name": "diagnostic_spaces_owner_user_id_unique_idx",
          "columns": [
            "owner_user_id"
          ],
          "isUnique": true
        },
        "diagnostic_spaces_questionnaire_id_idx": {
          "name": "diagnostic_spaces_questionnaire_id_idx",
          "columns": [
            "questionnaire_id"
          ],
          "isUnique": false
        },
        "diagnostic_spaces_owner_public_code_idx": {
          "name": "diagnostic_spaces_owner_public_code_idx",
          "columns": [
            "owner_user_id",
            "public_code"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "diagnostic_spaces_questionnaire_id_fkey": {
          "name": "diagnostic_spaces_questionnaire_id_fkey",
          "tableFrom": "diagnostic_spaces",
          "tableTo": "questionnaires",
          "columnsFrom": [
            "questionnaire_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "restrict",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "diagnostic_spaces_id": {
          "name": "diagnostic_spaces_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {
        "diagnostic_spaces_public_code_format_check": {
          "name": "diagnostic_spaces_public_code_format_check",
          "value": "`diagnostic_spaces`.`public_code` regexp '^C-[ABCDEFGHJKMNPQRSTUVWXYZ23456789]{4}-[ABCDEFGHJKMNPQRSTUVWXYZ23456789]{4}$'"
        },
        "diagnostic_spaces_private_token_hmac_length_check": {
          "name": "diagnostic_spaces_private_token_hmac_length_check",
          "value": "char_length(`diagnostic_spaces`.`private_token_hmac`) >= 43"
        },
        "diagnostic_spaces_results_token_hash_length_check": {
          "name": "diagnostic_spaces_results_token_hash_length_check",
          "value": "char_length(`diagnostic_spaces`.`results_token_hash`) >= 43"
        },
        "diagnostic_spaces_results_token_encrypted_not_blank_check": {
          "name": "diagnostic_spaces_results_token_encrypted_not_blank_check",
          "value": "`diagnostic_spaces`.`results_token_encrypted` is null or trim(`diagnostic_spaces`.`results_token_encrypted`) <> ''"
        },
        "diagnostic_spaces_results_token_expires_at_check": {
          "name": "diagnostic_spaces_results_token_expires_at_check",
          "value": "`diagnostic_spaces`.`results_token_expires_at` is null or `diagnostic_spaces`.`results_token_expires_at` >= `diagnostic_spaces`.`results_token_created_at`"
        },
        "diagnostic_spaces_closed_at_check": {
          "name": "diagnostic_spaces_closed_at_check",
          "value": "`diagnostic_spaces`.`closed_at` is null or `diagnostic_spaces`.`closed_at` >= `diagnostic_spaces`.`created_at`"
        }
      }
    },
    "question_blocks": {
      "name": "question_blocks",
      "columns": {
        "id": {
          "name": "id",
          "type": "char(2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "questionnaire_id": {
          "name": "questionnaire_id",
          "type": "char(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "position": {
          "name": "position",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "title": {
          "name": "title",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        }
      },
      "indexes": {
        "question_blocks_questionnaire_position_key": {
          "name": "question_blocks_questionnaire_position_key",
          "columns": [
            "questionnaire_id",
            "position"
          ],
          "isUnique": true
        },
        "question_blocks_questionnaire_id_idx": {
          "name": "question_blocks_questionnaire_id_idx",
          "columns": [
            "questionnaire_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "question_blocks_questionnaire_id_fkey": {
          "name": "question_blocks_questionnaire_id_fkey",
          "tableFrom": "question_blocks",
          "tableTo": "questionnaires",
          "columnsFrom": [
            "questionnaire_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "restrict",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "question_blocks_pkey": {
          "name": "question_blocks_pkey",
          "columns": [
            "id",
            "questionnaire_id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {
        "question_blocks_id_format_check": {
          "name": "question_blocks_id_format_check",
          "value": "`question_blocks`.`id` regexp '^[0-9]{2}$'"
        },
        "question_blocks_position_check": {
          "name": "question_blocks_position_check",
          "value": "`question_blocks`.`position` between 1 and 10"
        },
        "question_blocks_title_not_blank_check": {
          "name": "question_blocks_title_not_blank_check",
          "value": "trim(`question_blocks`.`title`) <> ''"
        }
      }
    },
    "questionnaires": {
      "name": "questionnaires",
      "columns": {
        "id": {
          "name": "id",
          "type": "char(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "version": {
          "name": "version",
          "type": "varchar(20)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "title": {
          "name": "title",
          "type": "varchar(255)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "is_active": {
          "name": "is_active",
          "type": "boolean",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": false
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(CURRENT_TIMESTAMP(3))"
        }
      },
      "indexes": {
        "questionnaires_version_key": {
          "name": "questionnaires_version_key",
          "columns": [
            "version"
          ],
          "isUnique": true
        },
        "questionnaires_title_unique_idx": {
          "name": "questionnaires_title_unique_idx",
          "columns": [
            "(lower(trim(`title`)))"
          ],
          "isUnique": true
        }
      },
      "foreignKeys": {},
      "compositePrimaryKeys": {
        "questionnaires_id": {
          "name": "questionnaires_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {
        "questionnaires_id_format_check": {
          "name": "questionnaires_id_format_check",
          "value": "`questionnaires`.`id` regexp '^[0-9]{3}$'"
        },
        "questionnaires_version_format_check": {
          "name": "questionnaires_version_format_check",
          "value": "`questionnaires`.`version` regexp '^[0-9]{4}\\.[0-9]+$'"
        },
        "questionnaires_title_not_blank_check": {
          "name": "questionnaires_title_not_blank_check",
          "value": "trim(`questionnaires`.`title`) <> ''"
        }
      }
    },
    "questions": {
      "name": "questions",
      "columns": {
        "id": {
          "name": "id",
          "type": "char(36)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "questionnaire_id": {
          "name": "questionnaire_id",
          "type": "char(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "block_id": {
          "name": "block_id",
          "type": "char(2)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "position": {
          "name": "position",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "block_position": {
          "name": "block_position",
          "type": "int",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "text": {
          "name": "text",
          "type": "text",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "scale_min": {
          "name": "scale_min",
          "type": "tinyint",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": 0
        },
        "scale_max": {
          "name": "scale_max",
          "type": "tinyint",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": 3
        }
      },
      "indexes": {
        "questions_id_questionnaire_unique": {
          "name": "questions_id_questionnaire_unique",
          "columns": [
            "id",
            "questionnaire_id"
          ],
          "isUnique": true
        },
        "questions_questionnaire_position_key": {
          "name": "questions_questionnaire_position_key",
          "columns": [
            "questionnaire_id",
            "position"
          ],
          "isUnique": true
        },
        "questions_block_position_key": {
          "name": "questions_block_position_key",
          "columns": [
            "questionnaire_id",
            "block_id",
            "block_position"
          ],
          "isUnique": true
        },
        "questions_questionnaire_id_idx": {
          "name": "questions_questionnaire_id_idx",
          "columns": [
            "questionnaire_id"
          ],
          "isUnique": false
        },
        "questions_block_id_idx": {
          "name": "questions_block_id_idx",
          "columns": [
            "block_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "questions_questionnaire_id_fkey": {
          "name": "questions_questionnaire_id_fkey",
          "tableFrom": "questions",
          "tableTo": "questionnaires",
          "columnsFrom": [
            "questionnaire_id"
          ],
          "columnsTo": [
            "id"
          ],
          "onDelete": "restrict",
          "onUpdate": "no action"
        },
        "questions_block_questionnaire_fk": {
          "name": "questions_block_questionnaire_fk",
          "tableFrom": "questions",
          "tableTo": "question_blocks",
          "columnsFrom": [
            "block_id",
            "questionnaire_id"
          ],
          "columnsTo": [
            "id",
            "questionnaire_id"
          ],
          "onDelete": "restrict",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "questions_id": {
          "name": "questions_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {
        "questions_position_check": {
          "name": "questions_position_check",
          "value": "`questions`.`position` between 1 and 100"
        },
        "questions_block_position_check": {
          "name": "questions_block_position_check",
          "value": "`questions`.`block_position` between 1 and 10"
        },
        "questions_text_not_blank_check": {
          "name": "questions_text_not_blank_check",
          "value": "trim(`questions`.`text`) <> ''"
        },
        "questions_scale_min_check": {
          "name": "questions_scale_min_check",
          "value": "`questions`.`scale_min` = 0"
        },
        "questions_scale_max_check": {
          "name": "questions_scale_max_check",
          "value": "`questions`.`scale_max` = 3"
        }
      }
    },
    "submissions": {
      "name": "submissions",
      "columns": {
        "id": {
          "name": "id",
          "type": "char(36)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "diagnostic_space_id": {
          "name": "diagnostic_space_id",
          "type": "char(36)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "questionnaire_id": {
          "name": "questionnaire_id",
          "type": "char(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false
        },
        "created_at": {
          "name": "created_at",
          "type": "datetime(3)",
          "primaryKey": false,
          "notNull": true,
          "autoincrement": false,
          "default": "(CURRENT_TIMESTAMP(3))"
        }
      },
      "indexes": {
        "submissions_id_questionnaire_unique": {
          "name": "submissions_id_questionnaire_unique",
          "columns": [
            "id",
            "questionnaire_id"
          ],
          "isUnique": true
        },
        "submissions_diagnostic_space_id_idx": {
          "name": "submissions_diagnostic_space_id_idx",
          "columns": [
            "diagnostic_space_id"
          ],
          "isUnique": false
        },
        "submissions_questionnaire_id_idx": {
          "name": "submissions_questionnaire_id_idx",
          "columns": [
            "questionnaire_id"
          ],
          "isUnique": false
        }
      },
      "foreignKeys": {
        "submissions_space_questionnaire_fk": {
          "name": "submissions_space_questionnaire_fk",
          "tableFrom": "submissions",
          "tableTo": "diagnostic_spaces",
          "columnsFrom": [
            "diagnostic_space_id",
            "questionnaire_id"
          ],
          "columnsTo": [
            "id",
            "questionnaire_id"
          ],
          "onDelete": "restrict",
          "onUpdate": "no action"
        }
      },
      "compositePrimaryKeys": {
        "submissions_id": {
          "name": "submissions_id",
          "columns": [
            "id"
          ]
        }
      },
      "uniqueConstraints": {},
      "checkConstraint": {}
    }
  },
  "views": {},
  "_meta": {
    "schemas": {},
    "tables": {},
    "columns": {}
  },
  "internal": {
    "tables": {},
    "indexes": {
      "questionnaires_title_unique_idx": {
        "columns": {
          "(lower(trim(`title`)))": {
            "isExpression": true
          }
        }
      }
    }
  }
}
