@spfn/cms 0.1.0-alpha.6 → 0.1.0-alpha.61
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/dist/actions.d.ts +140 -6
- package/dist/actions.js +97 -10
- package/dist/actions.js.map +1 -1
- package/dist/client.d.ts +43 -9
- package/dist/client.js +406 -56
- package/dist/client.js.map +1 -1
- package/dist/contracts/labels.d.ts +149 -0
- package/dist/contracts/labels.js +166 -0
- package/dist/contracts/labels.js.map +1 -0
- package/dist/contracts/published-cache.d.ts +25 -0
- package/dist/contracts/published-cache.js +32 -0
- package/dist/contracts/published-cache.js.map +1 -0
- package/dist/contracts/values.d.ts +69 -0
- package/dist/contracts/values.js +100 -0
- package/dist/contracts/values.js.map +1 -0
- package/dist/entities/cms-audit-logs.d.ts +15 -70
- package/dist/entities/cms-audit-logs.js +75 -100
- package/dist/entities/cms-audit-logs.js.map +1 -1
- package/dist/entities/cms-draft-cache.d.ts +13 -73
- package/dist/entities/cms-draft-cache.js +35 -109
- package/dist/entities/cms-draft-cache.js.map +1 -1
- package/dist/entities/cms-label-values.d.ts +14 -65
- package/dist/entities/cms-label-values.js +78 -102
- package/dist/entities/cms-label-values.js.map +1 -1
- package/dist/entities/cms-label-versions.d.ts +16 -49
- package/dist/entities/cms-label-versions.js +73 -77
- package/dist/entities/cms-label-versions.js.map +1 -1
- package/dist/entities/cms-labels.d.ts +17 -14
- package/dist/entities/cms-labels.js +39 -45
- package/dist/entities/cms-labels.js.map +1 -1
- package/dist/entities/cms-published-cache.d.ts +14 -69
- package/dist/entities/cms-published-cache.js +33 -100
- package/dist/entities/cms-published-cache.js.map +1 -1
- package/dist/entities/index.d.ts +7 -10
- package/dist/entities/index.js +217 -9
- package/dist/entities/index.js.map +1 -1
- package/dist/generators/index.d.ts +8 -7
- package/dist/generators/index.js +657 -17
- package/dist/generators/index.js.map +1 -1
- package/dist/index.d.ts +134 -20
- package/dist/index.js +1115 -23
- package/dist/index.js.map +1 -1
- package/dist/{generators/label-sync-generator.d.ts → label-sync-generator-lQrcVfja.d.ts} +9 -6
- package/dist/labels/index.d.ts +31 -4
- package/dist/labels/index.js +31 -6
- package/dist/labels/index.js.map +1 -1
- package/dist/repositories/index.d.ts +205 -6
- package/dist/repositories/index.js +435 -8
- package/dist/repositories/index.js.map +1 -1
- package/dist/routes/labels/[id]/index.js +499 -89
- package/dist/routes/labels/[id]/index.js.map +1 -1
- package/dist/routes/labels/{[id] → _id_}/index.d.ts +5 -3
- package/dist/routes/labels/by-key/[key]/index.js +453 -29
- package/dist/routes/labels/by-key/[key]/index.js.map +1 -1
- package/dist/routes/labels/by-key/_key_/index.d.ts +10 -0
- package/dist/routes/labels/index.d.ts +5 -3
- package/dist/routes/labels/index.js +488 -68
- package/dist/routes/labels/index.js.map +1 -1
- package/dist/routes/published-cache/index.d.ts +5 -3
- package/dist/routes/published-cache/index.js +325 -30
- package/dist/routes/published-cache/index.js.map +1 -1
- package/dist/routes/values/[labelId]/[version]/index.js +467 -41
- package/dist/routes/values/[labelId]/[version]/index.js.map +1 -1
- package/dist/routes/values/[labelId]/index.js +463 -39
- package/dist/routes/values/[labelId]/index.js.map +1 -1
- package/dist/routes/values/_labelId_/_version_/index.d.ts +10 -0
- package/dist/routes/values/_labelId_/index.d.ts +10 -0
- package/dist/server.d.ts +17 -7
- package/dist/server.js +263 -252
- package/dist/server.js.map +1 -1
- package/dist/store.d.ts +8 -14
- package/dist/store.js +396 -198
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +14 -7
- package/dist/types.js +0 -6
- package/dist/types.js.map +1 -1
- package/migrations/0000_condemned_centennial.sql +89 -0
- package/migrations/meta/0000_snapshot.json +687 -0
- package/migrations/meta/_journal.json +13 -0
- package/package.json +33 -16
- package/dist/actions.d.ts.map +0 -1
- package/dist/client.d.ts.map +0 -1
- package/dist/cms.config.d.ts +0 -77
- package/dist/cms.config.d.ts.map +0 -1
- package/dist/cms.config.js +0 -111
- package/dist/cms.config.js.map +0 -1
- package/dist/entities/cms-audit-logs.d.ts.map +0 -1
- package/dist/entities/cms-draft-cache.d.ts.map +0 -1
- package/dist/entities/cms-label-values.d.ts.map +0 -1
- package/dist/entities/cms-label-versions.d.ts.map +0 -1
- package/dist/entities/cms-labels.d.ts.map +0 -1
- package/dist/entities/cms-published-cache.d.ts.map +0 -1
- package/dist/entities/index.d.ts.map +0 -1
- package/dist/generators/index.d.ts.map +0 -1
- package/dist/generators/label-sync-generator.d.ts.map +0 -1
- package/dist/generators/label-sync-generator.js +0 -87
- package/dist/generators/label-sync-generator.js.map +0 -1
- package/dist/helpers/locale.actions.d.ts +0 -132
- package/dist/helpers/locale.actions.d.ts.map +0 -1
- package/dist/helpers/locale.actions.js +0 -210
- package/dist/helpers/locale.actions.js.map +0 -1
- package/dist/helpers/locale.constants.d.ts +0 -10
- package/dist/helpers/locale.constants.d.ts.map +0 -1
- package/dist/helpers/locale.constants.js +0 -10
- package/dist/helpers/locale.constants.js.map +0 -1
- package/dist/helpers/locale.d.ts +0 -17
- package/dist/helpers/locale.d.ts.map +0 -1
- package/dist/helpers/locale.js +0 -20
- package/dist/helpers/locale.js.map +0 -1
- package/dist/helpers/sync.d.ts +0 -41
- package/dist/helpers/sync.d.ts.map +0 -1
- package/dist/helpers/sync.js +0 -309
- package/dist/helpers/sync.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/init.d.ts +0 -31
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -36
- package/dist/init.js.map +0 -1
- package/dist/labels/helpers.d.ts +0 -31
- package/dist/labels/helpers.d.ts.map +0 -1
- package/dist/labels/helpers.js +0 -60
- package/dist/labels/helpers.js.map +0 -1
- package/dist/labels/index.d.ts.map +0 -1
- package/dist/repositories/cms-draft-cache.repository.d.ts +0 -62
- package/dist/repositories/cms-draft-cache.repository.d.ts.map +0 -1
- package/dist/repositories/cms-draft-cache.repository.js +0 -56
- package/dist/repositories/cms-draft-cache.repository.js.map +0 -1
- package/dist/repositories/cms-label-values.repository.d.ts +0 -32
- package/dist/repositories/cms-label-values.repository.d.ts.map +0 -1
- package/dist/repositories/cms-label-values.repository.js +0 -72
- package/dist/repositories/cms-label-values.repository.js.map +0 -1
- package/dist/repositories/cms-labels.repository.d.ts +0 -53
- package/dist/repositories/cms-labels.repository.d.ts.map +0 -1
- package/dist/repositories/cms-labels.repository.js +0 -77
- package/dist/repositories/cms-labels.repository.js.map +0 -1
- package/dist/repositories/cms-published-cache.repository.d.ts +0 -53
- package/dist/repositories/cms-published-cache.repository.d.ts.map +0 -1
- package/dist/repositories/cms-published-cache.repository.js +0 -54
- package/dist/repositories/cms-published-cache.repository.js.map +0 -1
- package/dist/repositories/index.d.ts.map +0 -1
- package/dist/routes/labels/[id]/contract.d.ts +0 -68
- package/dist/routes/labels/[id]/contract.d.ts.map +0 -1
- package/dist/routes/labels/[id]/contract.js +0 -84
- package/dist/routes/labels/[id]/contract.js.map +0 -1
- package/dist/routes/labels/[id]/index.d.ts.map +0 -1
- package/dist/routes/labels/by-key/[key]/contract.d.ts +0 -24
- package/dist/routes/labels/by-key/[key]/contract.d.ts.map +0 -1
- package/dist/routes/labels/by-key/[key]/contract.js +0 -28
- package/dist/routes/labels/by-key/[key]/contract.js.map +0 -1
- package/dist/routes/labels/by-key/[key]/index.d.ts +0 -8
- package/dist/routes/labels/by-key/[key]/index.d.ts.map +0 -1
- package/dist/routes/labels/contract.d.ts +0 -59
- package/dist/routes/labels/contract.d.ts.map +0 -1
- package/dist/routes/labels/contract.js +0 -75
- package/dist/routes/labels/contract.js.map +0 -1
- package/dist/routes/labels/index.d.ts.map +0 -1
- package/dist/routes/published-cache/contract.d.ts +0 -25
- package/dist/routes/published-cache/contract.d.ts.map +0 -1
- package/dist/routes/published-cache/contract.js +0 -35
- package/dist/routes/published-cache/contract.js.map +0 -1
- package/dist/routes/published-cache/index.d.ts.map +0 -1
- package/dist/routes/values/[labelId]/[version]/contract.d.ts +0 -29
- package/dist/routes/values/[labelId]/[version]/contract.d.ts.map +0 -1
- package/dist/routes/values/[labelId]/[version]/contract.js +0 -33
- package/dist/routes/values/[labelId]/[version]/contract.js.map +0 -1
- package/dist/routes/values/[labelId]/[version]/index.d.ts +0 -8
- package/dist/routes/values/[labelId]/[version]/index.d.ts.map +0 -1
- package/dist/routes/values/[labelId]/contract.d.ts +0 -38
- package/dist/routes/values/[labelId]/contract.d.ts.map +0 -1
- package/dist/routes/values/[labelId]/contract.js +0 -59
- package/dist/routes/values/[labelId]/contract.js.map +0 -1
- package/dist/routes/values/[labelId]/index.d.ts +0 -8
- package/dist/routes/values/[labelId]/index.d.ts.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/store.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
|
@@ -1,80 +1,76 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
1
|
+
// src/entities/cms-label-versions.ts
|
|
2
|
+
import { serial as serial2, integer as integer2, text as text2, timestamp as timestamp2, index as index2, unique } from "drizzle-orm/pg-core";
|
|
3
|
+
import { createFunctionSchema as createFunctionSchema2 } from "@spfn/core/db";
|
|
4
|
+
|
|
5
|
+
// src/entities/cms-labels.ts
|
|
6
|
+
import { index, integer, serial, text, timestamp } from "drizzle-orm/pg-core";
|
|
7
|
+
import { createFunctionSchema } from "@spfn/core/db";
|
|
8
|
+
var schema = createFunctionSchema("@spfn/cms");
|
|
9
|
+
var cmsLabels = schema.table("labels", {
|
|
10
|
+
// Primary Key
|
|
11
|
+
id: serial("id").primaryKey(),
|
|
12
|
+
// 라벨 식별자
|
|
13
|
+
key: text("key").notNull().unique(),
|
|
14
|
+
// 예: "home.hero.title", "why-futureplay.hero.subtitle"
|
|
15
|
+
// 구조: {section}.{component}.{property}
|
|
16
|
+
// 섹션 분류 (페이지 단위)
|
|
17
|
+
section: text("section").notNull(),
|
|
18
|
+
// 예: "home", "why-futureplay", "team"
|
|
19
|
+
// 값 타입
|
|
20
|
+
type: text("type").notNull(),
|
|
21
|
+
// "text" | "image" | "video" | "file" | "object"
|
|
22
|
+
// 기본값
|
|
23
|
+
defaultValue: text("default_value"),
|
|
24
|
+
// 라벨의 기본값 (sync 시 설정)
|
|
25
|
+
// 설명
|
|
26
|
+
description: text("description"),
|
|
27
|
+
// 라벨에 대한 설명 (optional)
|
|
28
|
+
// 현재 발행된 버전 번호
|
|
29
|
+
publishedVersion: integer("published_version"),
|
|
30
|
+
// null = 미발행 상태
|
|
31
|
+
// 1, 2, 3... = 발행된 버전 번호
|
|
32
|
+
// 생성자 추적
|
|
33
|
+
createdBy: text("created_by"),
|
|
34
|
+
// 타임스탬프
|
|
35
|
+
createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
|
|
36
|
+
updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow()
|
|
35
37
|
}, (table) => [
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
index('cms_label_versions_label_id_idx').on(table.labelId),
|
|
41
|
-
// 인덱스: status 필터링 최적화
|
|
42
|
-
index('cms_label_versions_status_idx').on(table.status),
|
|
38
|
+
// 인덱스: 섹션별 조회 최적화
|
|
39
|
+
index("cms_labels_section_idx").on(table.section),
|
|
40
|
+
// 인덱스: key로 조회 최적화 (unique 제약으로 자동 생성되지만 명시)
|
|
41
|
+
index("cms_labels_key_idx").on(table.key)
|
|
43
42
|
]);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
* .where(eq(cmsLabelVersions.status, 'published'))
|
|
78
|
-
* .orderBy(desc(cmsLabelVersions.publishedAt));
|
|
79
|
-
*/
|
|
43
|
+
|
|
44
|
+
// src/entities/cms-label-versions.ts
|
|
45
|
+
var schema2 = createFunctionSchema2("@spfn/cms");
|
|
46
|
+
var cmsLabelVersions = schema2.table("label_versions", {
|
|
47
|
+
// Primary Key
|
|
48
|
+
id: serial2("id").primaryKey(),
|
|
49
|
+
// Foreign Key: cms_labels
|
|
50
|
+
labelId: integer2("label_id").notNull().references(() => cmsLabels.id, { onDelete: "cascade" }),
|
|
51
|
+
// 버전 번호
|
|
52
|
+
version: integer2("version").notNull(),
|
|
53
|
+
// 버전 상태
|
|
54
|
+
status: text2("status").notNull(),
|
|
55
|
+
// "draft" | "published" | "archived"
|
|
56
|
+
// 발행 정보
|
|
57
|
+
publishedAt: timestamp2("published_at", { withTimezone: true }),
|
|
58
|
+
publishedBy: text2("published_by"),
|
|
59
|
+
// 버전 노트 (변경사항 설명)
|
|
60
|
+
notes: text2("notes"),
|
|
61
|
+
// 버전 생성자
|
|
62
|
+
createdBy: text2("created_by"),
|
|
63
|
+
// 생성 시각
|
|
64
|
+
createdAt: timestamp2("created_at", { withTimezone: true }).notNull().defaultNow()
|
|
65
|
+
}, (table) => [
|
|
66
|
+
// UNIQUE 제약: 각 라벨의 버전 번호는 고유
|
|
67
|
+
unique("cms_label_versions_label_version_unique").on(table.labelId, table.version),
|
|
68
|
+
// 인덱스: labelId로 버전 목록 조회 최적화
|
|
69
|
+
index2("cms_label_versions_label_id_idx").on(table.labelId),
|
|
70
|
+
// 인덱스: status 필터링 최적화
|
|
71
|
+
index2("cms_label_versions_status_idx").on(table.status)
|
|
72
|
+
]);
|
|
73
|
+
export {
|
|
74
|
+
cmsLabelVersions
|
|
75
|
+
};
|
|
80
76
|
//# sourceMappingURL=cms-label-versions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/entities/cms-label-versions.ts","../../src/entities/cms-labels.ts"],"sourcesContent":["/**\n * CMS Label Versions Entity\n *\n * 라벨의 버전 메타데이터를 관리합니다.\n * - 버전별 상태 (draft/published/archived)\n * - 발행 정보 (publishedAt, publishedBy)\n * - 버전 노트\n */\n\nimport { serial, integer, text, timestamp, index, unique } from 'drizzle-orm/pg-core';\nimport { createFunctionSchema } from '@spfn/core/db';\nimport { cmsLabels } from '@/entities/cms-labels';\n\n// Create isolated schema for @spfn/cms\nconst schema = createFunctionSchema('@spfn/cms');\n\nexport const cmsLabelVersions = schema.table('label_versions', {\n // Primary Key\n id: serial('id').primaryKey(),\n\n // Foreign Key: cms_labels\n labelId: integer('label_id')\n .notNull()\n .references(() => cmsLabels.id, { onDelete: 'cascade' }),\n\n // 버전 번호\n version: integer('version').notNull(),\n\n // 버전 상태\n status: text('status').notNull(),\n // \"draft\" | \"published\" | \"archived\"\n\n // 발행 정보\n publishedAt: timestamp('published_at', { withTimezone: true }),\n publishedBy: text('published_by'),\n\n // 버전 노트 (변경사항 설명)\n notes: text('notes'),\n\n // 버전 생성자\n createdBy: text('created_by'),\n\n // 생성 시각\n createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),\n}, (table) => [\n // UNIQUE 제약: 각 라벨의 버전 번호는 고유\n unique('cms_label_versions_label_version_unique')\n .on(table.labelId, table.version),\n\n // 인덱스: labelId로 버전 목록 조회 최적화\n index('cms_label_versions_label_id_idx').on(table.labelId),\n\n // 인덱스: status 필터링 최적화\n index('cms_label_versions_status_idx').on(table.status),\n]);\n\n// 타입 추론\nexport type CmsLabelVersion = typeof cmsLabelVersions.$inferSelect;\nexport type NewCmsLabelVersion = typeof cmsLabelVersions.$inferInsert;\n\n/**\n * 사용 예시:\n *\n * // 새 버전 생성 (draft)\n * await db.insert(cmsLabelVersions).values({\n * labelId: 1,\n * version: 2,\n * status: 'draft',\n * notes: '문구 개선',\n * createdBy: 'editor@futureplay.com'\n * });\n *\n * // 버전 발행\n * await db.update(cmsLabelVersions)\n * .set({\n * status: 'published',\n * publishedAt: new Date(),\n * publishedBy: 'admin@futureplay.com'\n * })\n * .where(and(\n * eq(cmsLabelVersions.labelId, 1),\n * eq(cmsLabelVersions.version, 2)\n * ));\n *\n * // 라벨의 모든 버전 조회\n * const versions = await db.select()\n * .from(cmsLabelVersions)\n * .where(eq(cmsLabelVersions.labelId, 1))\n * .orderBy(desc(cmsLabelVersions.version));\n *\n * // 발행된 버전만 조회\n * const published = await db.select()\n * .from(cmsLabelVersions)\n * .where(eq(cmsLabelVersions.status, 'published'))\n * .orderBy(desc(cmsLabelVersions.publishedAt));\n */","/**\n * CMS Labels Entity\n *\n * 라벨의 메타데이터와 현재 발행 상태를 관리합니다.\n * - 라벨 식별 (id, key)\n * - 섹션 분류 (section)\n * - 타입 정의 (type)\n * - 발행 상태 (publishedVersion)\n */\n\nimport { index, integer, serial, text, timestamp } from 'drizzle-orm/pg-core';\nimport { createFunctionSchema } from '@spfn/core/db';\n\n// Create isolated schema for @spfn/cms\nconst schema = createFunctionSchema('@spfn/cms');\n\nexport const cmsLabels = schema.table('labels', {\n // Primary Key\n id: serial('id').primaryKey(),\n\n // 라벨 식별자\n key: text('key').notNull().unique(),\n // 예: \"home.hero.title\", \"why-futureplay.hero.subtitle\"\n // 구조: {section}.{component}.{property}\n\n // 섹션 분류 (페이지 단위)\n section: text('section').notNull(),\n // 예: \"home\", \"why-futureplay\", \"team\"\n\n // 값 타입\n type: text('type').notNull(),\n // \"text\" | \"image\" | \"video\" | \"file\" | \"object\"\n\n // 기본값\n defaultValue: text('default_value'),\n // 라벨의 기본값 (sync 시 설정)\n\n // 설명\n description: text('description'),\n // 라벨에 대한 설명 (optional)\n\n // 현재 발행된 버전 번호\n publishedVersion: integer('published_version'),\n // null = 미발행 상태\n // 1, 2, 3... = 발행된 버전 번호\n\n // 생성자 추적\n createdBy: text('created_by'),\n\n // 타임스탬프\n createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp('updated_at', { withTimezone: true }).notNull().defaultNow(),\n}, (table) => [\n // 인덱스: 섹션별 조회 최적화\n index('cms_labels_section_idx').on(table.section),\n\n // 인덱스: key로 조회 최적화 (unique 제약으로 자동 생성되지만 명시)\n index('cms_labels_key_idx').on(table.key),\n]);\n\n// 타입 추론\nexport type CmsLabel = typeof cmsLabels.$inferSelect;\nexport type NewCmsLabel = typeof cmsLabels.$inferInsert;"],"mappings":";AASA,SAAS,UAAAA,SAAQ,WAAAC,UAAS,QAAAC,OAAM,aAAAC,YAAW,SAAAC,QAAO,cAAc;AAChE,SAAS,wBAAAC,6BAA4B;;;ACArC,SAAS,OAAO,SAAS,QAAQ,MAAM,iBAAiB;AACxD,SAAS,4BAA4B;AAGrC,IAAM,SAAS,qBAAqB,WAAW;AAExC,IAAM,YAAY,OAAO,MAAM,UAAU;AAAA;AAAA,EAE5C,IAAI,OAAO,IAAI,EAAE,WAAW;AAAA;AAAA,EAG5B,KAAK,KAAK,KAAK,EAAE,QAAQ,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA,EAKlC,SAAS,KAAK,SAAS,EAAE,QAAQ;AAAA;AAAA;AAAA,EAIjC,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA;AAAA;AAAA,EAI3B,cAAc,KAAK,eAAe;AAAA;AAAA;AAAA,EAIlC,aAAa,KAAK,aAAa;AAAA;AAAA;AAAA,EAI/B,kBAAkB,QAAQ,mBAAmB;AAAA;AAAA;AAAA;AAAA,EAK7C,WAAW,KAAK,YAAY;AAAA;AAAA,EAG5B,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,EAChF,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AACpF,GAAG,CAAC,UAAU;AAAA;AAAA,EAEV,MAAM,wBAAwB,EAAE,GAAG,MAAM,OAAO;AAAA;AAAA,EAGhD,MAAM,oBAAoB,EAAE,GAAG,MAAM,GAAG;AAC5C,CAAC;;;AD5CD,IAAMC,UAASC,sBAAqB,WAAW;AAExC,IAAM,mBAAmBD,QAAO,MAAM,kBAAkB;AAAA;AAAA,EAE3D,IAAIE,QAAO,IAAI,EAAE,WAAW;AAAA;AAAA,EAG5B,SAASC,SAAQ,UAAU,EAC1B,QAAQ,EACR,WAAW,MAAM,UAAU,IAAI,EAAE,UAAU,UAAU,CAAC;AAAA;AAAA,EAGvD,SAASA,SAAQ,SAAS,EAAE,QAAQ;AAAA;AAAA,EAGpC,QAAQC,MAAK,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA,EAI/B,aAAaC,WAAU,gBAAgB,EAAE,cAAc,KAAK,CAAC;AAAA,EAC7D,aAAaD,MAAK,cAAc;AAAA;AAAA,EAGhC,OAAOA,MAAK,OAAO;AAAA;AAAA,EAGnB,WAAWA,MAAK,YAAY;AAAA;AAAA,EAG5B,WAAWC,WAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AACpF,GAAG,CAAC,UAAU;AAAA;AAAA,EAEV,OAAO,yCAAyC,EAC/C,GAAG,MAAM,SAAS,MAAM,OAAO;AAAA;AAAA,EAGhCC,OAAM,iCAAiC,EAAE,GAAG,MAAM,OAAO;AAAA;AAAA,EAGzDA,OAAM,+BAA+B,EAAE,GAAG,MAAM,MAAM;AAC1D,CAAC;","names":["serial","integer","text","timestamp","index","createFunctionSchema","schema","createFunctionSchema","serial","integer","text","timestamp","index"]}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* CMS Labels Entity
|
|
3
5
|
*
|
|
@@ -7,11 +9,11 @@
|
|
|
7
9
|
* - 타입 정의 (type)
|
|
8
10
|
* - 발행 상태 (publishedVersion)
|
|
9
11
|
*/
|
|
10
|
-
|
|
12
|
+
declare const cmsLabels: drizzle_orm_pg_core.PgTableWithColumns<{
|
|
11
13
|
name: "labels";
|
|
12
14
|
schema: string;
|
|
13
15
|
columns: {
|
|
14
|
-
id:
|
|
16
|
+
id: drizzle_orm_pg_core.PgColumn<{
|
|
15
17
|
name: "id";
|
|
16
18
|
tableName: "labels";
|
|
17
19
|
dataType: "number";
|
|
@@ -28,7 +30,7 @@ export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
28
30
|
identity: undefined;
|
|
29
31
|
generated: undefined;
|
|
30
32
|
}, {}, {}>;
|
|
31
|
-
key:
|
|
33
|
+
key: drizzle_orm_pg_core.PgColumn<{
|
|
32
34
|
name: "key";
|
|
33
35
|
tableName: "labels";
|
|
34
36
|
dataType: "string";
|
|
@@ -45,7 +47,7 @@ export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
45
47
|
identity: undefined;
|
|
46
48
|
generated: undefined;
|
|
47
49
|
}, {}, {}>;
|
|
48
|
-
section:
|
|
50
|
+
section: drizzle_orm_pg_core.PgColumn<{
|
|
49
51
|
name: "section";
|
|
50
52
|
tableName: "labels";
|
|
51
53
|
dataType: "string";
|
|
@@ -62,7 +64,7 @@ export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
62
64
|
identity: undefined;
|
|
63
65
|
generated: undefined;
|
|
64
66
|
}, {}, {}>;
|
|
65
|
-
type:
|
|
67
|
+
type: drizzle_orm_pg_core.PgColumn<{
|
|
66
68
|
name: "type";
|
|
67
69
|
tableName: "labels";
|
|
68
70
|
dataType: "string";
|
|
@@ -79,7 +81,7 @@ export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
79
81
|
identity: undefined;
|
|
80
82
|
generated: undefined;
|
|
81
83
|
}, {}, {}>;
|
|
82
|
-
defaultValue:
|
|
84
|
+
defaultValue: drizzle_orm_pg_core.PgColumn<{
|
|
83
85
|
name: "default_value";
|
|
84
86
|
tableName: "labels";
|
|
85
87
|
dataType: "string";
|
|
@@ -96,7 +98,7 @@ export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
96
98
|
identity: undefined;
|
|
97
99
|
generated: undefined;
|
|
98
100
|
}, {}, {}>;
|
|
99
|
-
description:
|
|
101
|
+
description: drizzle_orm_pg_core.PgColumn<{
|
|
100
102
|
name: "description";
|
|
101
103
|
tableName: "labels";
|
|
102
104
|
dataType: "string";
|
|
@@ -113,7 +115,7 @@ export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
113
115
|
identity: undefined;
|
|
114
116
|
generated: undefined;
|
|
115
117
|
}, {}, {}>;
|
|
116
|
-
publishedVersion:
|
|
118
|
+
publishedVersion: drizzle_orm_pg_core.PgColumn<{
|
|
117
119
|
name: "published_version";
|
|
118
120
|
tableName: "labels";
|
|
119
121
|
dataType: "number";
|
|
@@ -130,7 +132,7 @@ export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
130
132
|
identity: undefined;
|
|
131
133
|
generated: undefined;
|
|
132
134
|
}, {}, {}>;
|
|
133
|
-
createdBy:
|
|
135
|
+
createdBy: drizzle_orm_pg_core.PgColumn<{
|
|
134
136
|
name: "created_by";
|
|
135
137
|
tableName: "labels";
|
|
136
138
|
dataType: "string";
|
|
@@ -147,7 +149,7 @@ export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
147
149
|
identity: undefined;
|
|
148
150
|
generated: undefined;
|
|
149
151
|
}, {}, {}>;
|
|
150
|
-
createdAt:
|
|
152
|
+
createdAt: drizzle_orm_pg_core.PgColumn<{
|
|
151
153
|
name: "created_at";
|
|
152
154
|
tableName: "labels";
|
|
153
155
|
dataType: "date";
|
|
@@ -164,7 +166,7 @@ export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
164
166
|
identity: undefined;
|
|
165
167
|
generated: undefined;
|
|
166
168
|
}, {}, {}>;
|
|
167
|
-
updatedAt:
|
|
169
|
+
updatedAt: drizzle_orm_pg_core.PgColumn<{
|
|
168
170
|
name: "updated_at";
|
|
169
171
|
tableName: "labels";
|
|
170
172
|
dataType: "date";
|
|
@@ -184,6 +186,7 @@ export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
184
186
|
};
|
|
185
187
|
dialect: "pg";
|
|
186
188
|
}>;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
189
|
+
type CmsLabel = typeof cmsLabels.$inferSelect;
|
|
190
|
+
type NewCmsLabel = typeof cmsLabels.$inferInsert;
|
|
191
|
+
|
|
192
|
+
export { type CmsLabel, type NewCmsLabel, cmsLabels };
|
|
@@ -1,48 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// 현재 발행된 버전 번호
|
|
34
|
-
publishedVersion: integer('published_version'),
|
|
35
|
-
// null = 미발행 상태
|
|
36
|
-
// 1, 2, 3... = 발행된 버전 번호
|
|
37
|
-
// 생성자 추적
|
|
38
|
-
createdBy: text('created_by'),
|
|
39
|
-
// 타임스탬프
|
|
40
|
-
createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
|
|
41
|
-
updatedAt: timestamp('updated_at', { withTimezone: true }).notNull().defaultNow(),
|
|
1
|
+
// src/entities/cms-labels.ts
|
|
2
|
+
import { index, integer, serial, text, timestamp } from "drizzle-orm/pg-core";
|
|
3
|
+
import { createFunctionSchema } from "@spfn/core/db";
|
|
4
|
+
var schema = createFunctionSchema("@spfn/cms");
|
|
5
|
+
var cmsLabels = schema.table("labels", {
|
|
6
|
+
// Primary Key
|
|
7
|
+
id: serial("id").primaryKey(),
|
|
8
|
+
// 라벨 식별자
|
|
9
|
+
key: text("key").notNull().unique(),
|
|
10
|
+
// 예: "home.hero.title", "why-futureplay.hero.subtitle"
|
|
11
|
+
// 구조: {section}.{component}.{property}
|
|
12
|
+
// 섹션 분류 (페이지 단위)
|
|
13
|
+
section: text("section").notNull(),
|
|
14
|
+
// 예: "home", "why-futureplay", "team"
|
|
15
|
+
// 값 타입
|
|
16
|
+
type: text("type").notNull(),
|
|
17
|
+
// "text" | "image" | "video" | "file" | "object"
|
|
18
|
+
// 기본값
|
|
19
|
+
defaultValue: text("default_value"),
|
|
20
|
+
// 라벨의 기본값 (sync 시 설정)
|
|
21
|
+
// 설명
|
|
22
|
+
description: text("description"),
|
|
23
|
+
// 라벨에 대한 설명 (optional)
|
|
24
|
+
// 현재 발행된 버전 번호
|
|
25
|
+
publishedVersion: integer("published_version"),
|
|
26
|
+
// null = 미발행 상태
|
|
27
|
+
// 1, 2, 3... = 발행된 버전 번호
|
|
28
|
+
// 생성자 추적
|
|
29
|
+
createdBy: text("created_by"),
|
|
30
|
+
// 타임스탬프
|
|
31
|
+
createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
|
|
32
|
+
updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow()
|
|
42
33
|
}, (table) => [
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
34
|
+
// 인덱스: 섹션별 조회 최적화
|
|
35
|
+
index("cms_labels_section_idx").on(table.section),
|
|
36
|
+
// 인덱스: key로 조회 최적화 (unique 제약으로 자동 생성되지만 명시)
|
|
37
|
+
index("cms_labels_key_idx").on(table.key)
|
|
47
38
|
]);
|
|
39
|
+
export {
|
|
40
|
+
cmsLabels
|
|
41
|
+
};
|
|
48
42
|
//# sourceMappingURL=cms-labels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/entities/cms-labels.ts"],"sourcesContent":["/**\n * CMS Labels Entity\n *\n * 라벨의 메타데이터와 현재 발행 상태를 관리합니다.\n * - 라벨 식별 (id, key)\n * - 섹션 분류 (section)\n * - 타입 정의 (type)\n * - 발행 상태 (publishedVersion)\n */\n\nimport { index, integer, serial, text, timestamp } from 'drizzle-orm/pg-core';\nimport { createFunctionSchema } from '@spfn/core/db';\n\n// Create isolated schema for @spfn/cms\nconst schema = createFunctionSchema('@spfn/cms');\n\nexport const cmsLabels = schema.table('labels', {\n // Primary Key\n id: serial('id').primaryKey(),\n\n // 라벨 식별자\n key: text('key').notNull().unique(),\n // 예: \"home.hero.title\", \"why-futureplay.hero.subtitle\"\n // 구조: {section}.{component}.{property}\n\n // 섹션 분류 (페이지 단위)\n section: text('section').notNull(),\n // 예: \"home\", \"why-futureplay\", \"team\"\n\n // 값 타입\n type: text('type').notNull(),\n // \"text\" | \"image\" | \"video\" | \"file\" | \"object\"\n\n // 기본값\n defaultValue: text('default_value'),\n // 라벨의 기본값 (sync 시 설정)\n\n // 설명\n description: text('description'),\n // 라벨에 대한 설명 (optional)\n\n // 현재 발행된 버전 번호\n publishedVersion: integer('published_version'),\n // null = 미발행 상태\n // 1, 2, 3... = 발행된 버전 번호\n\n // 생성자 추적\n createdBy: text('created_by'),\n\n // 타임스탬프\n createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp('updated_at', { withTimezone: true }).notNull().defaultNow(),\n}, (table) => [\n // 인덱스: 섹션별 조회 최적화\n index('cms_labels_section_idx').on(table.section),\n\n // 인덱스: key로 조회 최적화 (unique 제약으로 자동 생성되지만 명시)\n index('cms_labels_key_idx').on(table.key),\n]);\n\n// 타입 추론\nexport type CmsLabel = typeof cmsLabels.$inferSelect;\nexport type NewCmsLabel = typeof cmsLabels.$inferInsert;"],"mappings":";AAUA,SAAS,OAAO,SAAS,QAAQ,MAAM,iBAAiB;AACxD,SAAS,4BAA4B;AAGrC,IAAM,SAAS,qBAAqB,WAAW;AAExC,IAAM,YAAY,OAAO,MAAM,UAAU;AAAA;AAAA,EAE5C,IAAI,OAAO,IAAI,EAAE,WAAW;AAAA;AAAA,EAG5B,KAAK,KAAK,KAAK,EAAE,QAAQ,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA,EAKlC,SAAS,KAAK,SAAS,EAAE,QAAQ;AAAA;AAAA;AAAA,EAIjC,MAAM,KAAK,MAAM,EAAE,QAAQ;AAAA;AAAA;AAAA,EAI3B,cAAc,KAAK,eAAe;AAAA;AAAA;AAAA,EAIlC,aAAa,KAAK,aAAa;AAAA;AAAA;AAAA,EAI/B,kBAAkB,QAAQ,mBAAmB;AAAA;AAAA;AAAA;AAAA,EAK7C,WAAW,KAAK,YAAY;AAAA;AAAA,EAG5B,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AAAA,EAChF,WAAW,UAAU,cAAc,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW;AACpF,GAAG,CAAC,UAAU;AAAA;AAAA,EAEV,MAAM,wBAAwB,EAAE,GAAG,MAAM,OAAO;AAAA;AAAA,EAGhD,MAAM,oBAAoB,EAAE,GAAG,MAAM,GAAG;AAC5C,CAAC;","names":[]}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* CMS Published Cache Entity
|
|
3
5
|
*
|
|
@@ -10,11 +12,11 @@
|
|
|
10
12
|
* - 정규화 테이블 JOIN: 87ms
|
|
11
13
|
* - 캐시 테이블: 5ms (17배 빠름!)
|
|
12
14
|
*/
|
|
13
|
-
|
|
15
|
+
declare const cmsPublishedCache: drizzle_orm_pg_core.PgTableWithColumns<{
|
|
14
16
|
name: "published_cache";
|
|
15
17
|
schema: string;
|
|
16
18
|
columns: {
|
|
17
|
-
id:
|
|
19
|
+
id: drizzle_orm_pg_core.PgColumn<{
|
|
18
20
|
name: "id";
|
|
19
21
|
tableName: "published_cache";
|
|
20
22
|
dataType: "number";
|
|
@@ -31,7 +33,7 @@ export declare const cmsPublishedCache: import("drizzle-orm/pg-core").PgTableWit
|
|
|
31
33
|
identity: undefined;
|
|
32
34
|
generated: undefined;
|
|
33
35
|
}, {}, {}>;
|
|
34
|
-
section:
|
|
36
|
+
section: drizzle_orm_pg_core.PgColumn<{
|
|
35
37
|
name: "section";
|
|
36
38
|
tableName: "published_cache";
|
|
37
39
|
dataType: "string";
|
|
@@ -48,7 +50,7 @@ export declare const cmsPublishedCache: import("drizzle-orm/pg-core").PgTableWit
|
|
|
48
50
|
identity: undefined;
|
|
49
51
|
generated: undefined;
|
|
50
52
|
}, {}, {}>;
|
|
51
|
-
locale:
|
|
53
|
+
locale: drizzle_orm_pg_core.PgColumn<{
|
|
52
54
|
name: "locale";
|
|
53
55
|
tableName: "published_cache";
|
|
54
56
|
dataType: "string";
|
|
@@ -65,7 +67,7 @@ export declare const cmsPublishedCache: import("drizzle-orm/pg-core").PgTableWit
|
|
|
65
67
|
identity: undefined;
|
|
66
68
|
generated: undefined;
|
|
67
69
|
}, {}, {}>;
|
|
68
|
-
content:
|
|
70
|
+
content: drizzle_orm_pg_core.PgColumn<{
|
|
69
71
|
name: "content";
|
|
70
72
|
tableName: "published_cache";
|
|
71
73
|
dataType: "json";
|
|
@@ -82,7 +84,7 @@ export declare const cmsPublishedCache: import("drizzle-orm/pg-core").PgTableWit
|
|
|
82
84
|
identity: undefined;
|
|
83
85
|
generated: undefined;
|
|
84
86
|
}, {}, {}>;
|
|
85
|
-
publishedAt:
|
|
87
|
+
publishedAt: drizzle_orm_pg_core.PgColumn<{
|
|
86
88
|
name: "published_at";
|
|
87
89
|
tableName: "published_cache";
|
|
88
90
|
dataType: "date";
|
|
@@ -99,7 +101,7 @@ export declare const cmsPublishedCache: import("drizzle-orm/pg-core").PgTableWit
|
|
|
99
101
|
identity: undefined;
|
|
100
102
|
generated: undefined;
|
|
101
103
|
}, {}, {}>;
|
|
102
|
-
publishedBy:
|
|
104
|
+
publishedBy: drizzle_orm_pg_core.PgColumn<{
|
|
103
105
|
name: "published_by";
|
|
104
106
|
tableName: "published_cache";
|
|
105
107
|
dataType: "string";
|
|
@@ -116,7 +118,7 @@ export declare const cmsPublishedCache: import("drizzle-orm/pg-core").PgTableWit
|
|
|
116
118
|
identity: undefined;
|
|
117
119
|
generated: undefined;
|
|
118
120
|
}, {}, {}>;
|
|
119
|
-
version:
|
|
121
|
+
version: drizzle_orm_pg_core.PgColumn<{
|
|
120
122
|
name: "version";
|
|
121
123
|
tableName: "published_cache";
|
|
122
124
|
dataType: "number";
|
|
@@ -136,64 +138,7 @@ export declare const cmsPublishedCache: import("drizzle-orm/pg-core").PgTableWit
|
|
|
136
138
|
};
|
|
137
139
|
dialect: "pg";
|
|
138
140
|
}>;
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
*
|
|
144
|
-
* // 캐시 생성/업데이트 (UPSERT)
|
|
145
|
-
* await db.insert(cmsPublishedCache)
|
|
146
|
-
* .values({
|
|
147
|
-
* section: 'home',
|
|
148
|
-
* locale: 'ko',
|
|
149
|
-
* content: {
|
|
150
|
-
* 'home.hero.title': {
|
|
151
|
-
* type: 'text',
|
|
152
|
-
* content: '미래를 만드는 기업'
|
|
153
|
-
* },
|
|
154
|
-
* 'home.hero.image': {
|
|
155
|
-
* type: 'image',
|
|
156
|
-
* url: '/uploads/hero.jpg',
|
|
157
|
-
* alt: 'Hero',
|
|
158
|
-
* width: 1920,
|
|
159
|
-
* height: 1080
|
|
160
|
-
* }
|
|
161
|
-
* },
|
|
162
|
-
* publishedAt: new Date(),
|
|
163
|
-
* publishedBy: 'admin@futureplay.com'
|
|
164
|
-
* })
|
|
165
|
-
* .onConflictDoUpdate({
|
|
166
|
-
* target: [cmsPublishedCache.section, cmsPublishedCache.locale],
|
|
167
|
-
* set: {
|
|
168
|
-
* content: sql`EXCLUDED.content`,
|
|
169
|
-
* publishedAt: sql`EXCLUDED.published_at`,
|
|
170
|
-
* publishedBy: sql`EXCLUDED.published_by`,
|
|
171
|
-
* version: sql`${cmsPublishedCache.version} + 1`
|
|
172
|
-
* }
|
|
173
|
-
* });
|
|
174
|
-
*
|
|
175
|
-
* // 캐시 조회 (초고속!)
|
|
176
|
-
* const cache = await db.select()
|
|
177
|
-
* .from(cmsPublishedCache)
|
|
178
|
-
* .where(and(
|
|
179
|
-
* eq(cmsPublishedCache.section, 'home'),
|
|
180
|
-
* eq(cmsPublishedCache.locale, 'ko')
|
|
181
|
-
* ))
|
|
182
|
-
* .limit(1);
|
|
183
|
-
*
|
|
184
|
-
* const labels = cache[0].content; // 즉시 사용 가능!
|
|
185
|
-
*
|
|
186
|
-
* // 섹션의 모든 언어 캐시 조회
|
|
187
|
-
* const allLocales = await db.select()
|
|
188
|
-
* .from(cmsPublishedCache)
|
|
189
|
-
* .where(eq(cmsPublishedCache.section, 'home'));
|
|
190
|
-
*
|
|
191
|
-
* // 오래된 캐시 감지
|
|
192
|
-
* const stale = await db.select()
|
|
193
|
-
* .from(cmsPublishedCache)
|
|
194
|
-
* .where(lt(
|
|
195
|
-
* cmsPublishedCache.publishedAt,
|
|
196
|
-
* new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)
|
|
197
|
-
* ));
|
|
198
|
-
*/
|
|
199
|
-
//# sourceMappingURL=cms-published-cache.d.ts.map
|
|
141
|
+
type CmsPublishedCache = typeof cmsPublishedCache.$inferSelect;
|
|
142
|
+
type NewCmsPublishedCache = typeof cmsPublishedCache.$inferInsert;
|
|
143
|
+
|
|
144
|
+
export { type CmsPublishedCache, type NewCmsPublishedCache, cmsPublishedCache };
|