UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

1 lines 34 kB
{"version":3,"file":"00000003-users-and-permissions.mjs","names":[],"sources":["../../../../src/libs/db/migrations/00000003-users-and-permissions.ts"],"sourcesContent":["import type { Kysely } from \"kysely\";\nimport type DatabaseAdapter from \"../adapter-base.js\";\nimport type { MigrationFn } from \"../types.js\";\n\nconst Migration00000003: MigrationFn = (adapter: DatabaseAdapter) => {\n\treturn {\n\t\tasync up(db: Kysely<unknown>) {\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_tenants\")\n\t\t\t\t.addColumn(\"key\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.primaryKey(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"is_deleted\", adapter.getDataType(\"boolean\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"boolean\",\n\t\t\t\t\t\t\tadapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"is_deleted_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(null),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"updated_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_users\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"super_admin\", adapter.getDataType(\"boolean\"), (col) =>\n\t\t\t\t\tcol\n\t\t\t\t\t\t.defaultTo(\n\t\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\t\"boolean\",\n\t\t\t\t\t\t\t\tadapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"email\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull().unique(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"username\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull().unique(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"first_name\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"last_name\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"password\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"secret\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\n\t\t\t\t\t\"triggered_password_reset\",\n\t\t\t\t\tadapter.getDataType(\"boolean\"),\n\t\t\t\t\t(col) =>\n\t\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\t\"boolean\",\n\t\t\t\t\t\t\t\tadapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\n\t\t\t\t\t\"invitation_accepted\",\n\t\t\t\t\tadapter.getDataType(\"boolean\"),\n\t\t\t\t\t(col) =>\n\t\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\t\"boolean\",\n\t\t\t\t\t\t\t\tadapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"is_locked\", adapter.getDataType(\"boolean\"), (col) =>\n\t\t\t\t\tcol\n\t\t\t\t\t\t.defaultTo(\n\t\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\t\"boolean\",\n\t\t\t\t\t\t\t\tadapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"is_deleted\", adapter.getDataType(\"boolean\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"boolean\",\n\t\t\t\t\t\t\tadapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"is_deleted_at\", adapter.getDataType(\"timestamp\"))\n\t\t\t\t.addColumn(\"deleted_by\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_users.id\").onDelete(\"set null\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"updated_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_user_tenants\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"user_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_users.id\").onDelete(\"cascade\").notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"tenant_key\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_tenants.key\").onDelete(\"cascade\").notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"updated_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addUniqueConstraint(\"lucid_user_tenants_user_id_tenant_key_unique\", [\n\t\t\t\t\t\"user_id\",\n\t\t\t\t\t\"tenant_key\",\n\t\t\t\t])\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_user_tenants_user_id\")\n\t\t\t\t.on(\"lucid_user_tenants\")\n\t\t\t\t.column(\"user_id\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_user_tenants_tenant_key\")\n\t\t\t\t.on(\"lucid_user_tenants\")\n\t\t\t\t.column(\"tenant_key\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_user_auth_providers\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"user_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_users.id\").onDelete(\"cascade\").notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"provider_key\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"provider_user_id\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"linked_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol\n\t\t\t\t\t\t.defaultTo(\n\t\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"metadata\", adapter.getDataType(\"json\"))\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"updated_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"lucid_user_auth_providers_user_id_index\")\n\t\t\t\t.on(\"lucid_user_auth_providers\")\n\t\t\t\t.column(\"user_id\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"lucid_user_auth_providers_provider_lookup_index\")\n\t\t\t\t.on(\"lucid_user_auth_providers\")\n\t\t\t\t.columns([\"provider_key\", \"provider_user_id\"])\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_roles\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"key\", adapter.getDataType(\"text\"), (col) => col.unique())\n\t\t\t\t.addColumn(\"locked\", adapter.getDataType(\"boolean\"), (col) =>\n\t\t\t\t\tcol\n\t\t\t\t\t\t.notNull()\n\t\t\t\t\t\t.defaultTo(\n\t\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\t\"boolean\",\n\t\t\t\t\t\t\t\tadapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"tenant_key\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"updated_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_roles_tenant_key\")\n\t\t\t\t.on(\"lucid_roles\")\n\t\t\t\t.column(\"tenant_key\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_role_translations\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"role_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_roles.id\").onDelete(\"cascade\").notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"locale_code\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"name\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"description\", adapter.getDataType(\"text\"))\n\t\t\t\t.addUniqueConstraint(\n\t\t\t\t\t\"lucid_role_translations_role_id_locale_code_unique\",\n\t\t\t\t\t[\"role_id\", \"locale_code\"],\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_role_translations_role_id\")\n\t\t\t\t.on(\"lucid_role_translations\")\n\t\t\t\t.column(\"role_id\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_role_permissions\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"role_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_roles.id\").onDelete(\"cascade\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"permission\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"core\", adapter.getDataType(\"boolean\"), (col) =>\n\t\t\t\t\tcol\n\t\t\t\t\t\t.notNull()\n\t\t\t\t\t\t.defaultTo(\n\t\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\t\"boolean\",\n\t\t\t\t\t\t\t\tadapter.getDefault(\"boolean\", \"true\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"updated_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_user_roles\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"user_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_users.id\").onDelete(\"cascade\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"role_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_roles.id\").onDelete(\"cascade\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"updated_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_user_tokens\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"user_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_users.id\").notNull().onDelete(\"cascade\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"token_type\", adapter.getDataType(\"varchar\", 255))\n\t\t\t\t.addColumn(\"token\", adapter.getDataType(\"varchar\", 255), (col) =>\n\t\t\t\t\tcol.notNull().unique(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"revoked_at\", adapter.getDataType(\"timestamp\"))\n\t\t\t\t.addColumn(\"revoke_reason\", adapter.getDataType(\"varchar\", 255))\n\t\t\t\t.addColumn(\"consumed_at\", adapter.getDataType(\"timestamp\"))\n\t\t\t\t.addColumn(\n\t\t\t\t\t\"replaced_by_token_id\",\n\t\t\t\t\tadapter.getDataType(\"integer\"),\n\t\t\t\t\t(col) => col.references(\"lucid_user_tokens.id\").onDelete(\"set null\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"expiry_date\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_user_tokens_user_id\")\n\t\t\t\t.on(\"lucid_user_tokens\")\n\t\t\t\t.column(\"user_id\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_user_tokens_refresh_lookup\")\n\t\t\t\t.on(\"lucid_user_tokens\")\n\t\t\t\t.columns([\"user_id\", \"token_type\", \"revoked_at\", \"expiry_date\"])\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_email_change_requests\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"user_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_users.id\").notNull().onDelete(\"cascade\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"old_email\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"new_email\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"confirm_token_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_user_tokens.id\").notNull().onDelete(\"cascade\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"revert_token_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_user_tokens.id\").notNull().onDelete(\"cascade\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"status\", adapter.getDataType(\"varchar\", 255), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"confirmed_at\", adapter.getDataType(\"timestamp\"))\n\t\t\t\t.addColumn(\"cancelled_at\", adapter.getDataType(\"timestamp\"))\n\t\t\t\t.addColumn(\"reverted_at\", adapter.getDataType(\"timestamp\"))\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"updated_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"expires_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_email_change_requests_user_status\")\n\t\t\t\t.on(\"lucid_email_change_requests\")\n\t\t\t\t.columns([\"user_id\", \"status\", \"expires_at\"])\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_email_change_requests_confirm_token\")\n\t\t\t\t.on(\"lucid_email_change_requests\")\n\t\t\t\t.column(\"confirm_token_id\")\n\t\t\t\t.unique()\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_email_change_requests_revert_token\")\n\t\t\t\t.on(\"lucid_email_change_requests\")\n\t\t\t\t.column(\"revert_token_id\")\n\t\t\t\t.unique()\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_user_logins\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"user_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_users.id\").onDelete(\"cascade\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"token_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_user_tokens.id\").onDelete(\"set null\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"auth_method\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"ip_address\", adapter.getDataType(\"varchar\", 255))\n\t\t\t\t.addColumn(\"user_agent\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.defaultTo(\n\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_auth_states\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"state\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull().unique(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"provider_key\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"redirect_path\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"action_type\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\n\t\t\t\t\t\"invitation_token_id\",\n\t\t\t\t\tadapter.getDataType(\"integer\"),\n\t\t\t\t\t(col) => col.references(\"lucid_user_tokens.id\").onDelete(\"cascade\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"invitation_token\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\n\t\t\t\t\t\"authenticated_user_id\",\n\t\t\t\t\tadapter.getDataType(\"integer\"),\n\t\t\t\t\t(col) => col.references(\"lucid_users.id\").onDelete(\"set null\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol\n\t\t\t\t\t\t.defaultTo(\n\t\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"expiry_date\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"lucid_auth_states_state_index\")\n\t\t\t\t.on(\"lucid_auth_states\")\n\t\t\t\t.column(\"state\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_security_audit_logs\")\n\t\t\t\t.addColumn(\"id\", adapter.getDataType(\"primary\"), (col) =>\n\t\t\t\t\tadapter.primaryKeyColumnBuilder(col),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"user_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_users.id\").onDelete(\"set null\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"action\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"performed_by\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_users.id\").onDelete(\"set null\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"performed_by_roles\", adapter.getDataType(\"json\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\n\t\t\t\t\t\"performed_by_super_admin\",\n\t\t\t\t\tadapter.getDataType(\"boolean\"),\n\t\t\t\t\t(col) =>\n\t\t\t\t\t\tcol\n\t\t\t\t\t\t\t.defaultTo(\n\t\t\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\t\t\"boolean\",\n\t\t\t\t\t\t\t\t\tadapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"ip_address\", adapter.getDataType(\"varchar\", 255), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"previous_value\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"new_value\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"created_at\", adapter.getDataType(\"timestamp\"), (col) =>\n\t\t\t\t\tcol\n\t\t\t\t\t\t.defaultTo(\n\t\t\t\t\t\t\tadapter.formatDefaultValue(\n\t\t\t\t\t\t\t\t\"timestamp\",\n\t\t\t\t\t\t\t\tadapter.getDefault(\"timestamp\", \"now\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.notNull(),\n\t\t\t\t)\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_security_audit_logs_user_id\")\n\t\t\t\t.on(\"lucid_security_audit_logs\")\n\t\t\t\t.column(\"user_id\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_security_audit_logs_action\")\n\t\t\t\t.on(\"lucid_security_audit_logs\")\n\t\t\t\t.column(\"action\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_security_audit_logs_performed_by\")\n\t\t\t\t.on(\"lucid_security_audit_logs\")\n\t\t\t\t.column(\"performed_by\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_security_audit_logs_created_at\")\n\t\t\t\t.on(\"lucid_security_audit_logs\")\n\t\t\t\t.column(\"created_at\")\n\t\t\t\t.execute();\n\t\t},\n\t\tasync down(_db: Kysely<unknown>) {},\n\t};\n};\nexport default Migration00000003;\n"],"mappings":"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"}