UNPKG

@lucidcms/core

Version:

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

1 lines 12.4 kB
{"version":3,"file":"00000005-emails.mjs","names":[],"sources":["../../../../src/libs/db/migrations/00000005-emails.ts"],"sourcesContent":["import type { Kysely } from \"kysely\";\nimport type DatabaseAdapter from \"../adapter-base.js\";\nimport type { MigrationFn } from \"../types.js\";\n\nconst Migration00000005: 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_emails\")\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(\"from_address\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"from_name\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"to_address\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"subject\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"cc\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"bcc\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"template\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"priority\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull().defaultTo(\"normal\"),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"headers\", adapter.getDataType(\"json\"))\n\t\t\t\t.addColumn(\"data\", adapter.getDataType(\"json\"))\n\t\t\t\t.addColumn(\"storage_strategy\", adapter.getDataType(\"json\"))\n\t\t\t\t.addColumn(\"type\", adapter.getDataType(\"text\"), (col) => col.notNull()) // 'internal' or 'external'\n\t\t\t\t.addColumn(\"is_system\", 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(\"current_status\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t) // 'pending', 'delivered', 'failed'\n\t\t\t\t.addColumn(\"attempt_count\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.notNull().defaultTo(0),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"last_attempted_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.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_email_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(\"email_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_emails.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_email_tenants_email_id_tenant_key_unique\", [\n\t\t\t\t\t\"email_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_email_tenants_email_id\")\n\t\t\t\t.on(\"lucid_email_tenants\")\n\t\t\t\t.column(\"email_id\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createIndex(\"idx_lucid_email_tenants_tenant_key\")\n\t\t\t\t.on(\"lucid_email_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_email_attachments\")\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(\"email_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_emails.id\").onDelete(\"cascade\").notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"type\", adapter.getDataType(\"text\"), (col) => col.notNull())\n\t\t\t\t.addColumn(\"url\", adapter.getDataType(\"text\"), (col) => col.notNull())\n\t\t\t\t.addColumn(\"filename\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"content_type\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"disposition\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"content_id\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"order\", adapter.getDataType(\"integer\"), (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.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_email_attachments_email_id\")\n\t\t\t\t.on(\"lucid_email_attachments\")\n\t\t\t\t.column(\"email_id\")\n\t\t\t\t.execute();\n\n\t\t\tawait db.schema\n\t\t\t\t.createTable(\"lucid_email_transactions\")\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(\"email_id\", adapter.getDataType(\"integer\"), (col) =>\n\t\t\t\t\tcol.references(\"lucid_emails.id\").onDelete(\"cascade\").notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"delivery_status\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t) // 'pending', 'delivered', 'failed'\n\t\t\t\t.addColumn(\"message\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"external_message_id\", adapter.getDataType(\"text\"))\n\t\t\t\t.addColumn(\"strategy_identifier\", adapter.getDataType(\"text\"), (col) =>\n\t\t\t\t\tcol.notNull(),\n\t\t\t\t)\n\t\t\t\t.addColumn(\"strategy_data\", adapter.getDataType(\"json\"))\n\t\t\t\t.addColumn(\"simulate\", 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(\"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_email_transactions_external_message_id\")\n\t\t\t\t.on(\"lucid_email_transactions\")\n\t\t\t\t.column(\"external_message_id\")\n\t\t\t\t.execute();\n\t\t},\n\t\tasync down(_db: Kysely<unknown>) {},\n\t};\n};\nexport default Migration00000005;\n"],"mappings":"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"}