@infuro/cms-core 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -43
- package/dist/admin.cjs +1 -1
- package/dist/admin.css +12 -15
- package/dist/admin.js +1 -1
- package/dist/cli.cjs +859 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +836 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.cjs +3 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/migrations/1772178563554-InitialSchema.ts +304 -0
- package/dist/migrations/README.md +3 -0
- package/package.json +5 -2
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
export class InitialSchema1772178563554 implements MigrationInterface {
|
|
4
|
+
name = 'InitialSchema1772178563554';
|
|
5
|
+
|
|
6
|
+
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
7
|
+
// user_groups
|
|
8
|
+
await queryRunner.query(
|
|
9
|
+
`CREATE TABLE IF NOT EXISTS "user_groups" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_cfdb13ccb9e22f9108f42983014" UNIQUE ("name"), CONSTRAINT "PK_ea7760dc75ee1bf0b09ab9b3289" PRIMARY KEY ("id"))`,
|
|
10
|
+
);
|
|
11
|
+
// permissions
|
|
12
|
+
await queryRunner.query(
|
|
13
|
+
`CREATE TABLE IF NOT EXISTS "permissions" ("id" SERIAL NOT NULL, "groupId" integer NOT NULL, "entity" character varying NOT NULL, "canCreate" boolean NOT NULL DEFAULT false, "canRead" boolean NOT NULL DEFAULT false, "canUpdate" boolean NOT NULL DEFAULT false, "canDelete" boolean NOT NULL DEFAULT false, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "PK_920331560282b8bd21bb02290df" PRIMARY KEY ("id"))`,
|
|
14
|
+
);
|
|
15
|
+
// users
|
|
16
|
+
await queryRunner.query(
|
|
17
|
+
`CREATE TABLE IF NOT EXISTS "users" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "email" character varying NOT NULL, "password" character varying, "blocked" boolean NOT NULL DEFAULT false, "groupId" integer, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_97672ac88f789774dd47f7c8be3" UNIQUE ("email"), CONSTRAINT "PK_a3ffb1c0c8416b9fc6f907b7433" PRIMARY KEY ("id"))`,
|
|
18
|
+
);
|
|
19
|
+
// password_reset_tokens
|
|
20
|
+
await queryRunner.query(
|
|
21
|
+
`CREATE TABLE IF NOT EXISTS "password_reset_tokens" ("id" SERIAL NOT NULL, "email" character varying NOT NULL, "token" character varying NOT NULL, "expiresAt" TIMESTAMP NOT NULL DEFAULT now(), "createdAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UQ_ab673f0e63eac966762155508ee" UNIQUE ("token"), CONSTRAINT "PK_d16bebd73e844c48bca50ff8d3d" PRIMARY KEY ("id"))`,
|
|
22
|
+
);
|
|
23
|
+
// categories (unique constraint name distinct from tags)
|
|
24
|
+
await queryRunner.query(
|
|
25
|
+
`CREATE TABLE IF NOT EXISTS "categories" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_categories_name" UNIQUE ("name"), CONSTRAINT "PK_24dbc6126a28ff948da33e97d3b" PRIMARY KEY ("id"))`,
|
|
26
|
+
);
|
|
27
|
+
// seos
|
|
28
|
+
await queryRunner.query(
|
|
29
|
+
`CREATE TABLE IF NOT EXISTS "seos" ("id" SERIAL NOT NULL, "title" character varying, "description" character varying, "keywords" character varying, "ogTitle" character varying, "ogDescription" character varying, "ogImage" character varying, "slug" character varying NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_857ec07b2e149e4b4b3daa77f0d" UNIQUE ("slug"), CONSTRAINT "PK_4e279c30300001d3650125f17cc" PRIMARY KEY ("id"))`,
|
|
30
|
+
);
|
|
31
|
+
// tags
|
|
32
|
+
await queryRunner.query(
|
|
33
|
+
`CREATE TABLE IF NOT EXISTS "tags" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_tags_name" UNIQUE ("name"), CONSTRAINT "PK_e7dc17249a1148a1970748eda99" PRIMARY KEY ("id"))`,
|
|
34
|
+
);
|
|
35
|
+
// blogs
|
|
36
|
+
await queryRunner.query(
|
|
37
|
+
`CREATE TABLE IF NOT EXISTS "blogs" ("id" SERIAL NOT NULL, "title" character varying NOT NULL, "content" text NOT NULL, "coverImage" character varying, "authorId" integer NOT NULL, "categoryId" integer, "seoId" integer, "published" boolean NOT NULL DEFAULT false, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, "slug" character varying NOT NULL, CONSTRAINT "UQ_7b18faaddd461656ff66f32e2d7" UNIQUE ("slug"), CONSTRAINT "PK_e113335f11c926da929a625f118" PRIMARY KEY ("id"))`,
|
|
38
|
+
);
|
|
39
|
+
// comments
|
|
40
|
+
await queryRunner.query(
|
|
41
|
+
`CREATE TABLE IF NOT EXISTS "comments" ("id" SERIAL NOT NULL, "content" text NOT NULL, "blogId" integer NOT NULL, "authorId" integer NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "PK_8bf68bc960f2b69e818bdb90dcb" PRIMARY KEY ("id"))`,
|
|
42
|
+
);
|
|
43
|
+
// forms
|
|
44
|
+
await queryRunner.query(
|
|
45
|
+
`CREATE TABLE IF NOT EXISTS "forms" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "description" text, "campaign" character varying, "slug" character varying NOT NULL, "published" boolean NOT NULL DEFAULT false, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_beb11480ce7ba6813fe893723a1" UNIQUE ("slug"), CONSTRAINT "PK_ba062fd30b06814a60756f233da" PRIMARY KEY ("id"))`,
|
|
46
|
+
);
|
|
47
|
+
// form_fields
|
|
48
|
+
await queryRunner.query(
|
|
49
|
+
`CREATE TABLE IF NOT EXISTS "form_fields" ("id" SERIAL NOT NULL, "formId" integer NOT NULL, "label" character varying NOT NULL, "type" character varying NOT NULL, "placeholder" character varying, "options" character varying, "required" boolean NOT NULL DEFAULT false, "validation" character varying, "order" integer NOT NULL, "groupId" integer NOT NULL DEFAULT 1, "columnWidth" integer NOT NULL DEFAULT 12, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "PK_dc4b73290f2926c3a7d7c92d1e1" PRIMARY KEY ("id"))`,
|
|
50
|
+
);
|
|
51
|
+
// contacts
|
|
52
|
+
await queryRunner.query(
|
|
53
|
+
`CREATE TABLE IF NOT EXISTS "contacts" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "email" character varying NOT NULL, "phone" character varying, "type" character varying, "company" character varying, "taxId" character varying, "notes" text, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_752866c5247ddd34fd05559537d" UNIQUE ("email"), CONSTRAINT "PK_b99cd40cfd66a99f1571f4f72e6" PRIMARY KEY ("id"))`,
|
|
54
|
+
);
|
|
55
|
+
// form_submissions
|
|
56
|
+
await queryRunner.query(
|
|
57
|
+
`CREATE TABLE IF NOT EXISTS "form_submissions" ("id" SERIAL NOT NULL, "formId" integer NOT NULL, "contactId" integer, "data" jsonb NOT NULL, "ipAddress" character varying, "userAgent" character varying, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_fb6e1e9f26cda31c358a8a1530e" PRIMARY KEY ("id"))`,
|
|
58
|
+
);
|
|
59
|
+
// configs
|
|
60
|
+
await queryRunner.query(
|
|
61
|
+
`CREATE TABLE IF NOT EXISTS "configs" ("id" SERIAL NOT NULL, "settings" character varying NOT NULL, "key" character varying NOT NULL, "value" character varying NOT NULL, "type" character varying NOT NULL DEFAULT 'private', "encrypted" boolean NOT NULL DEFAULT false, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_5d44d56e585f5d19b52525f94d3" UNIQUE ("settings", "key"), CONSTRAINT "PK_002b633ec0d45f5c6f928fea292" PRIMARY KEY ("id"))`,
|
|
62
|
+
);
|
|
63
|
+
// media
|
|
64
|
+
await queryRunner.query(
|
|
65
|
+
`CREATE TABLE IF NOT EXISTS "media" ("id" SERIAL NOT NULL, "filename" character varying NOT NULL, "url" character varying NOT NULL, "mimeType" character varying NOT NULL, "size" integer NOT NULL DEFAULT 0, "alt" character varying, "isPublic" boolean NOT NULL DEFAULT false, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_media_1" PRIMARY KEY ("id"))`,
|
|
66
|
+
);
|
|
67
|
+
// addresses
|
|
68
|
+
await queryRunner.query(
|
|
69
|
+
`CREATE TABLE IF NOT EXISTS "addresses" ("id" SERIAL NOT NULL, "contactId" integer NOT NULL, "tag" character varying, "line1" character varying, "line2" character varying, "city" character varying, "state" character varying, "postalCode" character varying, "country" character varying, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_addresses_1" PRIMARY KEY ("id"))`,
|
|
70
|
+
);
|
|
71
|
+
// product_categories
|
|
72
|
+
await queryRunner.query(
|
|
73
|
+
`CREATE TABLE IF NOT EXISTS "product_categories" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "slug" character varying NOT NULL, "parentId" integer, "image" character varying, "description" text, "metadata" jsonb, "active" boolean NOT NULL DEFAULT true, "sortOrder" integer NOT NULL DEFAULT 0, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_product_categories_slug" UNIQUE ("slug"), CONSTRAINT "PK_product_categories_1" PRIMARY KEY ("id"))`,
|
|
74
|
+
);
|
|
75
|
+
// brands
|
|
76
|
+
await queryRunner.query(
|
|
77
|
+
`CREATE TABLE IF NOT EXISTS "brands" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "slug" character varying NOT NULL, "logo" character varying, "metadata" jsonb, "description" text, "active" boolean NOT NULL DEFAULT true, "sortOrder" integer NOT NULL DEFAULT 0, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, "seoId" integer, CONSTRAINT "UQ_brands_slug" UNIQUE ("slug"), CONSTRAINT "PK_brands_1" PRIMARY KEY ("id"))`,
|
|
78
|
+
);
|
|
79
|
+
// collections
|
|
80
|
+
await queryRunner.query(
|
|
81
|
+
`CREATE TABLE IF NOT EXISTS "collections" ("id" SERIAL NOT NULL, "categoryId" integer, "brandId" integer, "name" character varying NOT NULL, "slug" character varying NOT NULL, "description" text, "image" character varying, "metadata" jsonb, "active" boolean NOT NULL DEFAULT true, "sortOrder" integer NOT NULL DEFAULT 0, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, "seoId" integer, CONSTRAINT "UQ_collections_slug" UNIQUE ("slug"), CONSTRAINT "PK_collections_1" PRIMARY KEY ("id"))`,
|
|
82
|
+
);
|
|
83
|
+
// attributes
|
|
84
|
+
await queryRunner.query(
|
|
85
|
+
`CREATE TABLE IF NOT EXISTS "attributes" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "slug" character varying NOT NULL, "type" character varying NOT NULL DEFAULT 'text', "options" jsonb, "metadata" jsonb, "active" boolean NOT NULL DEFAULT true, "sortOrder" integer NOT NULL DEFAULT 0, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_attributes_slug" UNIQUE ("slug"), CONSTRAINT "PK_attributes_1" PRIMARY KEY ("id"))`,
|
|
86
|
+
);
|
|
87
|
+
// products
|
|
88
|
+
await queryRunner.query(
|
|
89
|
+
`CREATE TABLE IF NOT EXISTS "products" ("id" SERIAL NOT NULL, "collectionId" integer, "brandId" integer, "categoryId" integer, "sku" character varying, "slug" character varying, "name" character varying, "price" numeric(12,2) NOT NULL, "compareAtPrice" numeric(12,2), "quantity" integer NOT NULL DEFAULT 0, "status" character varying NOT NULL DEFAULT 'draft', "featured" boolean NOT NULL DEFAULT false, "metadata" jsonb, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, "seoId" integer, CONSTRAINT "UQ_products_slug" UNIQUE ("slug"), CONSTRAINT "PK_products_1" PRIMARY KEY ("id"))`,
|
|
90
|
+
);
|
|
91
|
+
// product_attributes
|
|
92
|
+
await queryRunner.query(
|
|
93
|
+
`CREATE TABLE IF NOT EXISTS "product_attributes" ("id" SERIAL NOT NULL, "productId" integer NOT NULL, "attributeId" integer NOT NULL, "value" character varying NOT NULL, "metadata" jsonb, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_product_attributes_1" PRIMARY KEY ("id"))`,
|
|
94
|
+
);
|
|
95
|
+
// taxes
|
|
96
|
+
await queryRunner.query(
|
|
97
|
+
`CREATE TABLE IF NOT EXISTS "taxes" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "slug" character varying NOT NULL, "rate" numeric(5,2) NOT NULL, "isDefault" boolean NOT NULL DEFAULT false, "description" text, "active" boolean NOT NULL DEFAULT true, "metadata" jsonb, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_taxes_slug" UNIQUE ("slug"), CONSTRAINT "PK_taxes_1" PRIMARY KEY ("id"))`,
|
|
98
|
+
);
|
|
99
|
+
// product_taxes
|
|
100
|
+
await queryRunner.query(
|
|
101
|
+
`CREATE TABLE IF NOT EXISTS "product_taxes" ("id" SERIAL NOT NULL, "productId" integer NOT NULL, "taxId" integer NOT NULL, "rate" numeric(5,2), "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_product_taxes_1" PRIMARY KEY ("id"))`,
|
|
102
|
+
);
|
|
103
|
+
// orders
|
|
104
|
+
await queryRunner.query(
|
|
105
|
+
`CREATE TABLE IF NOT EXISTS "orders" ("id" SERIAL NOT NULL, "orderNumber" character varying NOT NULL, "contactId" integer NOT NULL, "billingAddressId" integer, "shippingAddressId" integer, "status" character varying NOT NULL DEFAULT 'pending', "subtotal" numeric(12,2) NOT NULL DEFAULT 0, "tax" numeric(12,2) NOT NULL DEFAULT 0, "discount" numeric(12,2) NOT NULL DEFAULT 0, "total" numeric(12,2) NOT NULL DEFAULT 0, "currency" character varying NOT NULL DEFAULT 'INR', "metadata" jsonb, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_orders_orderNumber" UNIQUE ("orderNumber"), CONSTRAINT "PK_orders_1" PRIMARY KEY ("id"))`,
|
|
106
|
+
);
|
|
107
|
+
// order_items
|
|
108
|
+
await queryRunner.query(
|
|
109
|
+
`CREATE TABLE IF NOT EXISTS "order_items" ("id" SERIAL NOT NULL, "orderId" integer NOT NULL, "productId" integer NOT NULL, "quantity" integer NOT NULL DEFAULT 1, "unitPrice" numeric(12,2) NOT NULL, "tax" numeric(12,2) NOT NULL DEFAULT 0, "total" numeric(12,2) NOT NULL, "metadata" jsonb, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_order_items_1" PRIMARY KEY ("id"))`,
|
|
110
|
+
);
|
|
111
|
+
// payments
|
|
112
|
+
await queryRunner.query(
|
|
113
|
+
`CREATE TABLE IF NOT EXISTS "payments" ("id" SERIAL NOT NULL, "orderId" integer NOT NULL, "contactId" integer, "amount" numeric(12,2) NOT NULL, "currency" character varying NOT NULL DEFAULT 'INR', "status" character varying NOT NULL DEFAULT 'pending', "method" character varying, "externalReference" character varying, "metadata" jsonb, "paidAt" TIMESTAMP, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "PK_payments_1" PRIMARY KEY ("id"))`,
|
|
114
|
+
);
|
|
115
|
+
// pages
|
|
116
|
+
await queryRunner.query(
|
|
117
|
+
`CREATE TABLE IF NOT EXISTS "pages" ("id" SERIAL NOT NULL, "title" character varying NOT NULL, "slug" character varying NOT NULL, "content" jsonb NOT NULL DEFAULT '{}', "published" boolean NOT NULL DEFAULT false, "theme" character varying NOT NULL DEFAULT 'default', "parentId" integer, "seoId" integer, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP, "deleted" boolean NOT NULL DEFAULT false, "createdBy" integer, "updatedBy" integer, "deletedBy" integer, CONSTRAINT "UQ_pages_slug" UNIQUE ("slug"), CONSTRAINT "PK_pages_1" PRIMARY KEY ("id"))`,
|
|
118
|
+
);
|
|
119
|
+
// blog_tags (join table)
|
|
120
|
+
await queryRunner.query(
|
|
121
|
+
`CREATE TABLE IF NOT EXISTS "blog_tags" ("blogId" integer NOT NULL, "tagId" integer NOT NULL, CONSTRAINT "PK_blog_tags_1" PRIMARY KEY ("blogId", "tagId"))`,
|
|
122
|
+
);
|
|
123
|
+
await queryRunner.query(`CREATE INDEX "IDX_blog_tags_blogId" ON "blog_tags" ("blogId")`);
|
|
124
|
+
await queryRunner.query(`CREATE INDEX "IDX_blog_tags_tagId" ON "blog_tags" ("tagId")`);
|
|
125
|
+
|
|
126
|
+
// Foreign keys
|
|
127
|
+
await queryRunner.query(
|
|
128
|
+
`ALTER TABLE "permissions" ADD CONSTRAINT "FK_0ce20ad956af3961df1ff12d0c5" FOREIGN KEY ("groupId") REFERENCES "user_groups"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
129
|
+
);
|
|
130
|
+
await queryRunner.query(
|
|
131
|
+
`ALTER TABLE "users" ADD CONSTRAINT "FK_b1d770f014b76f7cfb58089dafc" FOREIGN KEY ("groupId") REFERENCES "user_groups"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
132
|
+
);
|
|
133
|
+
await queryRunner.query(
|
|
134
|
+
`ALTER TABLE "comments" ADD CONSTRAINT "FK_4548cc4a409b8651ec75f70e280" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
135
|
+
);
|
|
136
|
+
await queryRunner.query(
|
|
137
|
+
`ALTER TABLE "comments" ADD CONSTRAINT "FK_42a37ec3be9f871d4e44dd21bf9" FOREIGN KEY ("blogId") REFERENCES "blogs"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
138
|
+
);
|
|
139
|
+
await queryRunner.query(
|
|
140
|
+
`ALTER TABLE "blogs" ADD CONSTRAINT "FK_05aa4239904d894452e339e5139" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
141
|
+
);
|
|
142
|
+
await queryRunner.query(
|
|
143
|
+
`ALTER TABLE "blogs" ADD CONSTRAINT "FK_8c937e1b5e2c1269689bcf1138e" FOREIGN KEY ("categoryId") REFERENCES "categories"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
144
|
+
);
|
|
145
|
+
await queryRunner.query(
|
|
146
|
+
`ALTER TABLE "blogs" ADD CONSTRAINT "FK_f4d547526cb1933c9207f2bae4b" FOREIGN KEY ("seoId") REFERENCES "seos"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
147
|
+
);
|
|
148
|
+
await queryRunner.query(
|
|
149
|
+
`ALTER TABLE "form_fields" ADD CONSTRAINT "FK_be6b8d137cc480508923911b0e2" FOREIGN KEY ("formId") REFERENCES "forms"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
150
|
+
);
|
|
151
|
+
await queryRunner.query(
|
|
152
|
+
`ALTER TABLE "form_submissions" ADD CONSTRAINT "FK_6bb44ead8acd515f1333e5309bf" FOREIGN KEY ("formId") REFERENCES "forms"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
153
|
+
);
|
|
154
|
+
await queryRunner.query(
|
|
155
|
+
`ALTER TABLE "form_submissions" ADD CONSTRAINT "FK_a4b39f1fe022573d6b93039de93" FOREIGN KEY ("contactId") REFERENCES "contacts"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
156
|
+
);
|
|
157
|
+
await queryRunner.query(
|
|
158
|
+
`ALTER TABLE "addresses" ADD CONSTRAINT "FK_addresses_contact" FOREIGN KEY ("contactId") REFERENCES "contacts"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
159
|
+
);
|
|
160
|
+
await queryRunner.query(
|
|
161
|
+
`ALTER TABLE "product_categories" ADD CONSTRAINT "FK_product_categories_parent" FOREIGN KEY ("parentId") REFERENCES "product_categories"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
162
|
+
);
|
|
163
|
+
await queryRunner.query(
|
|
164
|
+
`ALTER TABLE "brands" ADD CONSTRAINT "FK_brands_seo" FOREIGN KEY ("seoId") REFERENCES "seos"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
165
|
+
);
|
|
166
|
+
await queryRunner.query(
|
|
167
|
+
`ALTER TABLE "collections" ADD CONSTRAINT "FK_collections_category" FOREIGN KEY ("categoryId") REFERENCES "product_categories"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
168
|
+
);
|
|
169
|
+
await queryRunner.query(
|
|
170
|
+
`ALTER TABLE "collections" ADD CONSTRAINT "FK_collections_brand" FOREIGN KEY ("brandId") REFERENCES "brands"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
171
|
+
);
|
|
172
|
+
await queryRunner.query(
|
|
173
|
+
`ALTER TABLE "collections" ADD CONSTRAINT "FK_collections_seo" FOREIGN KEY ("seoId") REFERENCES "seos"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
174
|
+
);
|
|
175
|
+
await queryRunner.query(
|
|
176
|
+
`ALTER TABLE "products" ADD CONSTRAINT "FK_products_seo" FOREIGN KEY ("seoId") REFERENCES "seos"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
177
|
+
);
|
|
178
|
+
await queryRunner.query(
|
|
179
|
+
`ALTER TABLE "products" ADD CONSTRAINT "FK_products_collection" FOREIGN KEY ("collectionId") REFERENCES "collections"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
180
|
+
);
|
|
181
|
+
await queryRunner.query(
|
|
182
|
+
`ALTER TABLE "products" ADD CONSTRAINT "FK_products_brand" FOREIGN KEY ("brandId") REFERENCES "brands"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
183
|
+
);
|
|
184
|
+
await queryRunner.query(
|
|
185
|
+
`ALTER TABLE "products" ADD CONSTRAINT "FK_products_category" FOREIGN KEY ("categoryId") REFERENCES "product_categories"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
186
|
+
);
|
|
187
|
+
await queryRunner.query(
|
|
188
|
+
`ALTER TABLE "product_attributes" ADD CONSTRAINT "FK_product_attributes_product" FOREIGN KEY ("productId") REFERENCES "products"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
189
|
+
);
|
|
190
|
+
await queryRunner.query(
|
|
191
|
+
`ALTER TABLE "product_attributes" ADD CONSTRAINT "FK_product_attributes_attribute" FOREIGN KEY ("attributeId") REFERENCES "attributes"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
192
|
+
);
|
|
193
|
+
await queryRunner.query(
|
|
194
|
+
`ALTER TABLE "product_taxes" ADD CONSTRAINT "FK_product_taxes_product" FOREIGN KEY ("productId") REFERENCES "products"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
195
|
+
);
|
|
196
|
+
await queryRunner.query(
|
|
197
|
+
`ALTER TABLE "product_taxes" ADD CONSTRAINT "FK_product_taxes_tax" FOREIGN KEY ("taxId") REFERENCES "taxes"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
198
|
+
);
|
|
199
|
+
await queryRunner.query(
|
|
200
|
+
`ALTER TABLE "orders" ADD CONSTRAINT "FK_orders_contact" FOREIGN KEY ("contactId") REFERENCES "contacts"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
201
|
+
);
|
|
202
|
+
await queryRunner.query(
|
|
203
|
+
`ALTER TABLE "orders" ADD CONSTRAINT "FK_orders_billing_address" FOREIGN KEY ("billingAddressId") REFERENCES "addresses"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
204
|
+
);
|
|
205
|
+
await queryRunner.query(
|
|
206
|
+
`ALTER TABLE "orders" ADD CONSTRAINT "FK_orders_shipping_address" FOREIGN KEY ("shippingAddressId") REFERENCES "addresses"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
207
|
+
);
|
|
208
|
+
await queryRunner.query(
|
|
209
|
+
`ALTER TABLE "order_items" ADD CONSTRAINT "FK_order_items_order" FOREIGN KEY ("orderId") REFERENCES "orders"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
210
|
+
);
|
|
211
|
+
await queryRunner.query(
|
|
212
|
+
`ALTER TABLE "order_items" ADD CONSTRAINT "FK_order_items_product" FOREIGN KEY ("productId") REFERENCES "products"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
213
|
+
);
|
|
214
|
+
await queryRunner.query(
|
|
215
|
+
`ALTER TABLE "payments" ADD CONSTRAINT "FK_payments_order" FOREIGN KEY ("orderId") REFERENCES "orders"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
216
|
+
);
|
|
217
|
+
await queryRunner.query(
|
|
218
|
+
`ALTER TABLE "payments" ADD CONSTRAINT "FK_payments_contact" FOREIGN KEY ("contactId") REFERENCES "contacts"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
219
|
+
);
|
|
220
|
+
await queryRunner.query(
|
|
221
|
+
`ALTER TABLE "pages" ADD CONSTRAINT "FK_pages_parent" FOREIGN KEY ("parentId") REFERENCES "pages"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
222
|
+
);
|
|
223
|
+
await queryRunner.query(
|
|
224
|
+
`ALTER TABLE "pages" ADD CONSTRAINT "FK_pages_seo" FOREIGN KEY ("seoId") REFERENCES "seos"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
225
|
+
);
|
|
226
|
+
await queryRunner.query(
|
|
227
|
+
`ALTER TABLE "blog_tags" ADD CONSTRAINT "FK_blog_tags_blog" FOREIGN KEY ("blogId") REFERENCES "blogs"("id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
228
|
+
);
|
|
229
|
+
await queryRunner.query(
|
|
230
|
+
`ALTER TABLE "blog_tags" ADD CONSTRAINT "FK_blog_tags_tag" FOREIGN KEY ("tagId") REFERENCES "tags"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
235
|
+
// Drop FKs first (reverse order to avoid dependency issues)
|
|
236
|
+
await queryRunner.query(`ALTER TABLE "blog_tags" DROP CONSTRAINT "FK_blog_tags_tag"`);
|
|
237
|
+
await queryRunner.query(`ALTER TABLE "blog_tags" DROP CONSTRAINT "FK_blog_tags_blog"`);
|
|
238
|
+
await queryRunner.query(`ALTER TABLE "pages" DROP CONSTRAINT "FK_pages_seo"`);
|
|
239
|
+
await queryRunner.query(`ALTER TABLE "pages" DROP CONSTRAINT "FK_pages_parent"`);
|
|
240
|
+
await queryRunner.query(`ALTER TABLE "payments" DROP CONSTRAINT "FK_payments_contact"`);
|
|
241
|
+
await queryRunner.query(`ALTER TABLE "payments" DROP CONSTRAINT "FK_payments_order"`);
|
|
242
|
+
await queryRunner.query(`ALTER TABLE "order_items" DROP CONSTRAINT "FK_order_items_product"`);
|
|
243
|
+
await queryRunner.query(`ALTER TABLE "order_items" DROP CONSTRAINT "FK_order_items_order"`);
|
|
244
|
+
await queryRunner.query(`ALTER TABLE "orders" DROP CONSTRAINT "FK_orders_shipping_address"`);
|
|
245
|
+
await queryRunner.query(`ALTER TABLE "orders" DROP CONSTRAINT "FK_orders_billing_address"`);
|
|
246
|
+
await queryRunner.query(`ALTER TABLE "orders" DROP CONSTRAINT "FK_orders_contact"`);
|
|
247
|
+
await queryRunner.query(`ALTER TABLE "product_taxes" DROP CONSTRAINT "FK_product_taxes_tax"`);
|
|
248
|
+
await queryRunner.query(`ALTER TABLE "product_taxes" DROP CONSTRAINT "FK_product_taxes_product"`);
|
|
249
|
+
await queryRunner.query(`ALTER TABLE "product_attributes" DROP CONSTRAINT "FK_product_attributes_attribute"`);
|
|
250
|
+
await queryRunner.query(`ALTER TABLE "product_attributes" DROP CONSTRAINT "FK_product_attributes_product"`);
|
|
251
|
+
await queryRunner.query(`ALTER TABLE "products" DROP CONSTRAINT "FK_products_category"`);
|
|
252
|
+
await queryRunner.query(`ALTER TABLE "products" DROP CONSTRAINT "FK_products_brand"`);
|
|
253
|
+
await queryRunner.query(`ALTER TABLE "products" DROP CONSTRAINT "FK_products_collection"`);
|
|
254
|
+
await queryRunner.query(`ALTER TABLE "products" DROP CONSTRAINT "FK_products_seo"`);
|
|
255
|
+
await queryRunner.query(`ALTER TABLE "collections" DROP CONSTRAINT "FK_collections_seo"`);
|
|
256
|
+
await queryRunner.query(`ALTER TABLE "collections" DROP CONSTRAINT "FK_collections_brand"`);
|
|
257
|
+
await queryRunner.query(`ALTER TABLE "collections" DROP CONSTRAINT "FK_collections_category"`);
|
|
258
|
+
await queryRunner.query(`ALTER TABLE "brands" DROP CONSTRAINT "FK_brands_seo"`);
|
|
259
|
+
await queryRunner.query(`ALTER TABLE "product_categories" DROP CONSTRAINT "FK_product_categories_parent"`);
|
|
260
|
+
await queryRunner.query(`ALTER TABLE "addresses" DROP CONSTRAINT "FK_addresses_contact"`);
|
|
261
|
+
await queryRunner.query(`ALTER TABLE "form_submissions" DROP CONSTRAINT "FK_a4b39f1fe022573d6b93039de93"`);
|
|
262
|
+
await queryRunner.query(`ALTER TABLE "form_submissions" DROP CONSTRAINT "FK_6bb44ead8acd515f1333e5309bf"`);
|
|
263
|
+
await queryRunner.query(`ALTER TABLE "form_fields" DROP CONSTRAINT "FK_be6b8d137cc480508923911b0e2"`);
|
|
264
|
+
await queryRunner.query(`ALTER TABLE "blogs" DROP CONSTRAINT "FK_f4d547526cb1933c9207f2bae4b"`);
|
|
265
|
+
await queryRunner.query(`ALTER TABLE "blogs" DROP CONSTRAINT "FK_8c937e1b5e2c1269689bcf1138e"`);
|
|
266
|
+
await queryRunner.query(`ALTER TABLE "blogs" DROP CONSTRAINT "FK_05aa4239904d894452e339e5139"`);
|
|
267
|
+
await queryRunner.query(`ALTER TABLE "comments" DROP CONSTRAINT "FK_42a37ec3be9f871d4e44dd21bf9"`);
|
|
268
|
+
await queryRunner.query(`ALTER TABLE "comments" DROP CONSTRAINT "FK_4548cc4a409b8651ec75f70e280"`);
|
|
269
|
+
await queryRunner.query(`ALTER TABLE "users" DROP CONSTRAINT "FK_b1d770f014b76f7cfb58089dafc"`);
|
|
270
|
+
await queryRunner.query(`ALTER TABLE "permissions" DROP CONSTRAINT "FK_0ce20ad956af3961df1ff12d0c5"`);
|
|
271
|
+
|
|
272
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_blog_tags_tagId"`);
|
|
273
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_blog_tags_blogId"`);
|
|
274
|
+
await queryRunner.query(`DROP TABLE "blog_tags"`);
|
|
275
|
+
await queryRunner.query(`DROP TABLE "pages"`);
|
|
276
|
+
await queryRunner.query(`DROP TABLE "payments"`);
|
|
277
|
+
await queryRunner.query(`DROP TABLE "order_items"`);
|
|
278
|
+
await queryRunner.query(`DROP TABLE "orders"`);
|
|
279
|
+
await queryRunner.query(`DROP TABLE "product_taxes"`);
|
|
280
|
+
await queryRunner.query(`DROP TABLE "product_attributes"`);
|
|
281
|
+
await queryRunner.query(`DROP TABLE "products"`);
|
|
282
|
+
await queryRunner.query(`DROP TABLE "taxes"`);
|
|
283
|
+
await queryRunner.query(`DROP TABLE "attributes"`);
|
|
284
|
+
await queryRunner.query(`DROP TABLE "collections"`);
|
|
285
|
+
await queryRunner.query(`DROP TABLE "brands"`);
|
|
286
|
+
await queryRunner.query(`DROP TABLE "product_categories"`);
|
|
287
|
+
await queryRunner.query(`DROP TABLE "addresses"`);
|
|
288
|
+
await queryRunner.query(`DROP TABLE "media"`);
|
|
289
|
+
await queryRunner.query(`DROP TABLE "configs"`);
|
|
290
|
+
await queryRunner.query(`DROP TABLE "form_submissions"`);
|
|
291
|
+
await queryRunner.query(`DROP TABLE "forms"`);
|
|
292
|
+
await queryRunner.query(`DROP TABLE "form_fields"`);
|
|
293
|
+
await queryRunner.query(`DROP TABLE "contacts"`);
|
|
294
|
+
await queryRunner.query(`DROP TABLE "comments"`);
|
|
295
|
+
await queryRunner.query(`DROP TABLE "blogs"`);
|
|
296
|
+
await queryRunner.query(`DROP TABLE "tags"`);
|
|
297
|
+
await queryRunner.query(`DROP TABLE "seos"`);
|
|
298
|
+
await queryRunner.query(`DROP TABLE "categories"`);
|
|
299
|
+
await queryRunner.query(`DROP TABLE "password_reset_tokens"`);
|
|
300
|
+
await queryRunner.query(`DROP TABLE "users"`);
|
|
301
|
+
await queryRunner.query(`DROP TABLE "user_groups"`);
|
|
302
|
+
await queryRunner.query(`DROP TABLE "permissions"`);
|
|
303
|
+
}
|
|
304
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@infuro/cms-core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
9
|
"description": "Infuro CMS core - headless CMS library for Next.js",
|
|
10
10
|
"license": "AGPL-3.0",
|
|
11
|
+
"bin": {
|
|
12
|
+
"infuro-cms": "./dist/cli.js"
|
|
13
|
+
},
|
|
11
14
|
"files": [
|
|
12
15
|
"dist"
|
|
13
16
|
],
|
|
@@ -50,7 +53,7 @@
|
|
|
50
53
|
"./admin.css": "./dist/admin.css"
|
|
51
54
|
},
|
|
52
55
|
"scripts": {
|
|
53
|
-
"build": "tsup && cp src/admin/admin.css dist/admin.css",
|
|
56
|
+
"build": "tsup && cp src/admin/admin.css dist/admin.css && mkdir -p dist/migrations && cp -r src/migrations/. dist/migrations/",
|
|
54
57
|
"dev": "tsup --watch",
|
|
55
58
|
"link": "npm run build && npm link",
|
|
56
59
|
"prepublishOnly": "npm run build"
|