@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.
Files changed (176) hide show
  1. package/dist/actions.d.ts +140 -6
  2. package/dist/actions.js +97 -10
  3. package/dist/actions.js.map +1 -1
  4. package/dist/client.d.ts +43 -9
  5. package/dist/client.js +406 -56
  6. package/dist/client.js.map +1 -1
  7. package/dist/contracts/labels.d.ts +149 -0
  8. package/dist/contracts/labels.js +166 -0
  9. package/dist/contracts/labels.js.map +1 -0
  10. package/dist/contracts/published-cache.d.ts +25 -0
  11. package/dist/contracts/published-cache.js +32 -0
  12. package/dist/contracts/published-cache.js.map +1 -0
  13. package/dist/contracts/values.d.ts +69 -0
  14. package/dist/contracts/values.js +100 -0
  15. package/dist/contracts/values.js.map +1 -0
  16. package/dist/entities/cms-audit-logs.d.ts +15 -70
  17. package/dist/entities/cms-audit-logs.js +75 -100
  18. package/dist/entities/cms-audit-logs.js.map +1 -1
  19. package/dist/entities/cms-draft-cache.d.ts +13 -73
  20. package/dist/entities/cms-draft-cache.js +35 -109
  21. package/dist/entities/cms-draft-cache.js.map +1 -1
  22. package/dist/entities/cms-label-values.d.ts +14 -65
  23. package/dist/entities/cms-label-values.js +78 -102
  24. package/dist/entities/cms-label-values.js.map +1 -1
  25. package/dist/entities/cms-label-versions.d.ts +16 -49
  26. package/dist/entities/cms-label-versions.js +73 -77
  27. package/dist/entities/cms-label-versions.js.map +1 -1
  28. package/dist/entities/cms-labels.d.ts +17 -14
  29. package/dist/entities/cms-labels.js +39 -45
  30. package/dist/entities/cms-labels.js.map +1 -1
  31. package/dist/entities/cms-published-cache.d.ts +14 -69
  32. package/dist/entities/cms-published-cache.js +33 -100
  33. package/dist/entities/cms-published-cache.js.map +1 -1
  34. package/dist/entities/index.d.ts +7 -10
  35. package/dist/entities/index.js +217 -9
  36. package/dist/entities/index.js.map +1 -1
  37. package/dist/generators/index.d.ts +8 -7
  38. package/dist/generators/index.js +657 -17
  39. package/dist/generators/index.js.map +1 -1
  40. package/dist/index.d.ts +134 -20
  41. package/dist/index.js +1115 -23
  42. package/dist/index.js.map +1 -1
  43. package/dist/{generators/label-sync-generator.d.ts → label-sync-generator-lQrcVfja.d.ts} +9 -6
  44. package/dist/labels/index.d.ts +31 -4
  45. package/dist/labels/index.js +31 -6
  46. package/dist/labels/index.js.map +1 -1
  47. package/dist/repositories/index.d.ts +205 -6
  48. package/dist/repositories/index.js +435 -8
  49. package/dist/repositories/index.js.map +1 -1
  50. package/dist/routes/labels/[id]/index.js +499 -89
  51. package/dist/routes/labels/[id]/index.js.map +1 -1
  52. package/dist/routes/labels/{[id] → _id_}/index.d.ts +5 -3
  53. package/dist/routes/labels/by-key/[key]/index.js +453 -29
  54. package/dist/routes/labels/by-key/[key]/index.js.map +1 -1
  55. package/dist/routes/labels/by-key/_key_/index.d.ts +10 -0
  56. package/dist/routes/labels/index.d.ts +5 -3
  57. package/dist/routes/labels/index.js +488 -68
  58. package/dist/routes/labels/index.js.map +1 -1
  59. package/dist/routes/published-cache/index.d.ts +5 -3
  60. package/dist/routes/published-cache/index.js +325 -30
  61. package/dist/routes/published-cache/index.js.map +1 -1
  62. package/dist/routes/values/[labelId]/[version]/index.js +467 -41
  63. package/dist/routes/values/[labelId]/[version]/index.js.map +1 -1
  64. package/dist/routes/values/[labelId]/index.js +463 -39
  65. package/dist/routes/values/[labelId]/index.js.map +1 -1
  66. package/dist/routes/values/_labelId_/_version_/index.d.ts +10 -0
  67. package/dist/routes/values/_labelId_/index.d.ts +10 -0
  68. package/dist/server.d.ts +17 -7
  69. package/dist/server.js +263 -252
  70. package/dist/server.js.map +1 -1
  71. package/dist/store.d.ts +8 -14
  72. package/dist/store.js +396 -198
  73. package/dist/store.js.map +1 -1
  74. package/dist/types.d.ts +14 -7
  75. package/dist/types.js +0 -6
  76. package/dist/types.js.map +1 -1
  77. package/migrations/0000_condemned_centennial.sql +89 -0
  78. package/migrations/meta/0000_snapshot.json +687 -0
  79. package/migrations/meta/_journal.json +13 -0
  80. package/package.json +33 -16
  81. package/dist/actions.d.ts.map +0 -1
  82. package/dist/client.d.ts.map +0 -1
  83. package/dist/cms.config.d.ts +0 -77
  84. package/dist/cms.config.d.ts.map +0 -1
  85. package/dist/cms.config.js +0 -111
  86. package/dist/cms.config.js.map +0 -1
  87. package/dist/entities/cms-audit-logs.d.ts.map +0 -1
  88. package/dist/entities/cms-draft-cache.d.ts.map +0 -1
  89. package/dist/entities/cms-label-values.d.ts.map +0 -1
  90. package/dist/entities/cms-label-versions.d.ts.map +0 -1
  91. package/dist/entities/cms-labels.d.ts.map +0 -1
  92. package/dist/entities/cms-published-cache.d.ts.map +0 -1
  93. package/dist/entities/index.d.ts.map +0 -1
  94. package/dist/generators/index.d.ts.map +0 -1
  95. package/dist/generators/label-sync-generator.d.ts.map +0 -1
  96. package/dist/generators/label-sync-generator.js +0 -87
  97. package/dist/generators/label-sync-generator.js.map +0 -1
  98. package/dist/helpers/locale.actions.d.ts +0 -132
  99. package/dist/helpers/locale.actions.d.ts.map +0 -1
  100. package/dist/helpers/locale.actions.js +0 -210
  101. package/dist/helpers/locale.actions.js.map +0 -1
  102. package/dist/helpers/locale.constants.d.ts +0 -10
  103. package/dist/helpers/locale.constants.d.ts.map +0 -1
  104. package/dist/helpers/locale.constants.js +0 -10
  105. package/dist/helpers/locale.constants.js.map +0 -1
  106. package/dist/helpers/locale.d.ts +0 -17
  107. package/dist/helpers/locale.d.ts.map +0 -1
  108. package/dist/helpers/locale.js +0 -20
  109. package/dist/helpers/locale.js.map +0 -1
  110. package/dist/helpers/sync.d.ts +0 -41
  111. package/dist/helpers/sync.d.ts.map +0 -1
  112. package/dist/helpers/sync.js +0 -309
  113. package/dist/helpers/sync.js.map +0 -1
  114. package/dist/index.d.ts.map +0 -1
  115. package/dist/init.d.ts +0 -31
  116. package/dist/init.d.ts.map +0 -1
  117. package/dist/init.js +0 -36
  118. package/dist/init.js.map +0 -1
  119. package/dist/labels/helpers.d.ts +0 -31
  120. package/dist/labels/helpers.d.ts.map +0 -1
  121. package/dist/labels/helpers.js +0 -60
  122. package/dist/labels/helpers.js.map +0 -1
  123. package/dist/labels/index.d.ts.map +0 -1
  124. package/dist/repositories/cms-draft-cache.repository.d.ts +0 -62
  125. package/dist/repositories/cms-draft-cache.repository.d.ts.map +0 -1
  126. package/dist/repositories/cms-draft-cache.repository.js +0 -56
  127. package/dist/repositories/cms-draft-cache.repository.js.map +0 -1
  128. package/dist/repositories/cms-label-values.repository.d.ts +0 -32
  129. package/dist/repositories/cms-label-values.repository.d.ts.map +0 -1
  130. package/dist/repositories/cms-label-values.repository.js +0 -72
  131. package/dist/repositories/cms-label-values.repository.js.map +0 -1
  132. package/dist/repositories/cms-labels.repository.d.ts +0 -53
  133. package/dist/repositories/cms-labels.repository.d.ts.map +0 -1
  134. package/dist/repositories/cms-labels.repository.js +0 -77
  135. package/dist/repositories/cms-labels.repository.js.map +0 -1
  136. package/dist/repositories/cms-published-cache.repository.d.ts +0 -53
  137. package/dist/repositories/cms-published-cache.repository.d.ts.map +0 -1
  138. package/dist/repositories/cms-published-cache.repository.js +0 -54
  139. package/dist/repositories/cms-published-cache.repository.js.map +0 -1
  140. package/dist/repositories/index.d.ts.map +0 -1
  141. package/dist/routes/labels/[id]/contract.d.ts +0 -68
  142. package/dist/routes/labels/[id]/contract.d.ts.map +0 -1
  143. package/dist/routes/labels/[id]/contract.js +0 -84
  144. package/dist/routes/labels/[id]/contract.js.map +0 -1
  145. package/dist/routes/labels/[id]/index.d.ts.map +0 -1
  146. package/dist/routes/labels/by-key/[key]/contract.d.ts +0 -24
  147. package/dist/routes/labels/by-key/[key]/contract.d.ts.map +0 -1
  148. package/dist/routes/labels/by-key/[key]/contract.js +0 -28
  149. package/dist/routes/labels/by-key/[key]/contract.js.map +0 -1
  150. package/dist/routes/labels/by-key/[key]/index.d.ts +0 -8
  151. package/dist/routes/labels/by-key/[key]/index.d.ts.map +0 -1
  152. package/dist/routes/labels/contract.d.ts +0 -59
  153. package/dist/routes/labels/contract.d.ts.map +0 -1
  154. package/dist/routes/labels/contract.js +0 -75
  155. package/dist/routes/labels/contract.js.map +0 -1
  156. package/dist/routes/labels/index.d.ts.map +0 -1
  157. package/dist/routes/published-cache/contract.d.ts +0 -25
  158. package/dist/routes/published-cache/contract.d.ts.map +0 -1
  159. package/dist/routes/published-cache/contract.js +0 -35
  160. package/dist/routes/published-cache/contract.js.map +0 -1
  161. package/dist/routes/published-cache/index.d.ts.map +0 -1
  162. package/dist/routes/values/[labelId]/[version]/contract.d.ts +0 -29
  163. package/dist/routes/values/[labelId]/[version]/contract.d.ts.map +0 -1
  164. package/dist/routes/values/[labelId]/[version]/contract.js +0 -33
  165. package/dist/routes/values/[labelId]/[version]/contract.js.map +0 -1
  166. package/dist/routes/values/[labelId]/[version]/index.d.ts +0 -8
  167. package/dist/routes/values/[labelId]/[version]/index.d.ts.map +0 -1
  168. package/dist/routes/values/[labelId]/contract.d.ts +0 -38
  169. package/dist/routes/values/[labelId]/contract.d.ts.map +0 -1
  170. package/dist/routes/values/[labelId]/contract.js +0 -59
  171. package/dist/routes/values/[labelId]/contract.js.map +0 -1
  172. package/dist/routes/values/[labelId]/index.d.ts +0 -8
  173. package/dist/routes/values/[labelId]/index.d.ts.map +0 -1
  174. package/dist/server.d.ts.map +0 -1
  175. package/dist/store.d.ts.map +0 -1
  176. package/dist/types.d.ts.map +0 -1
@@ -1,80 +1,76 @@
1
- /**
2
- * CMS Label Versions Entity
3
- *
4
- * 라벨의 버전 메타데이터를 관리합니다.
5
- * - 버전별 상태 (draft/published/archived)
6
- * - 발행 정보 (publishedAt, publishedBy)
7
- * - 버전 노트
8
- */
9
- import { serial, integer, text, timestamp, index, unique } from 'drizzle-orm/pg-core';
10
- import { createFunctionSchema } from '@spfn/core/db';
11
- import { cmsLabels } from './cms-labels.js';
12
- // Create isolated schema for @spfn/cms
13
- const schema = createFunctionSchema('@spfn/cms');
14
- export const cmsLabelVersions = schema.table('label_versions', {
15
- // Primary Key
16
- id: serial('id').primaryKey(),
17
- // Foreign Key: cms_labels
18
- labelId: integer('label_id')
19
- .notNull()
20
- .references(() => cmsLabels.id, { onDelete: 'cascade' }),
21
- // 버전 번호
22
- version: integer('version').notNull(),
23
- // 버전 상태
24
- status: text('status').notNull(),
25
- // "draft" | "published" | "archived"
26
- // 발행 정보
27
- publishedAt: timestamp('published_at', { withTimezone: true }),
28
- publishedBy: text('published_by'),
29
- // 버전 노트 (변경사항 설명)
30
- notes: text('notes'),
31
- // 버전 생성자
32
- createdBy: text('created_by'),
33
- // 생성 시각
34
- createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
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
- // UNIQUE 제약: 라벨의 버전 번호는 고유
37
- unique('cms_label_versions_label_version_unique')
38
- .on(table.labelId, table.version),
39
- // 인덱스: labelId로 버전 목록 조회 최적화
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
- * // 버전 생성 (draft)
48
- * await db.insert(cmsLabelVersions).values({
49
- * labelId: 1,
50
- * version: 2,
51
- * status: 'draft',
52
- * notes: '문구 개선',
53
- * createdBy: 'editor@futureplay.com'
54
- * });
55
- *
56
- * // 버전 발행
57
- * await db.update(cmsLabelVersions)
58
- * .set({
59
- * status: 'published',
60
- * publishedAt: new Date(),
61
- * publishedBy: 'admin@futureplay.com'
62
- * })
63
- * .where(and(
64
- * eq(cmsLabelVersions.labelId, 1),
65
- * eq(cmsLabelVersions.version, 2)
66
- * ));
67
- *
68
- * // 라벨의 모든 버전 조회
69
- * const versions = await db.select()
70
- * .from(cmsLabelVersions)
71
- * .where(eq(cmsLabelVersions.labelId, 1))
72
- * .orderBy(desc(cmsLabelVersions.version));
73
- *
74
- * // 발행된 버전만 조회
75
- * const published = await db.select()
76
- * .from(cmsLabelVersions)
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,"file":"cms-label-versions.js","sourceRoot":"","sources":["../../src/entities/cms-label-versions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,uCAAuC;AACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE;IAC3D,cAAc;IACd,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAE7B,0BAA0B;IAC1B,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;SAC3B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAExD,QAAQ;IACR,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IAErC,QAAQ;IACR,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAChC,qCAAqC;IAErC,QAAQ;IACR,WAAW,EAAE,SAAS,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC9D,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;IAEjC,kBAAkB;IAClB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;IAEpB,SAAS;IACT,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAE7B,QAAQ;IACR,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CACpF,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;IACV,6BAA6B;IAC7B,MAAM,CAAC,yCAAyC,CAAC;SAChD,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;IAEjC,6BAA6B;IAC7B,KAAK,CAAC,iCAAiC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IAE1D,sBAAsB;IACtB,KAAK,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;CAC1D,CAAC,CAAC;AAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG"}
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
- export declare const cmsLabels: import("drizzle-orm/pg-core").PgTableWithColumns<{
12
+ declare const cmsLabels: drizzle_orm_pg_core.PgTableWithColumns<{
11
13
  name: "labels";
12
14
  schema: string;
13
15
  columns: {
14
- id: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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
- export type CmsLabel = typeof cmsLabels.$inferSelect;
188
- export type NewCmsLabel = typeof cmsLabels.$inferInsert;
189
- //# sourceMappingURL=cms-labels.d.ts.map
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
- * CMS Labels Entity
3
- *
4
- * 라벨의 메타데이터와 현재 발행 상태를 관리합니다.
5
- * - 라벨 식별 (id, key)
6
- * - 섹션 분류 (section)
7
- * - 타입 정의 (type)
8
- * - 발행 상태 (publishedVersion)
9
- */
10
- import { index, integer, serial, text, timestamp } from 'drizzle-orm/pg-core';
11
- import { createFunctionSchema } from '@spfn/core/db';
12
- // Create isolated schema for @spfn/cms
13
- const schema = createFunctionSchema('@spfn/cms');
14
- export const cmsLabels = schema.table('labels', {
15
- // Primary Key
16
- id: serial('id').primaryKey(),
17
- // 라벨 식별자
18
- key: text('key').notNull().unique(),
19
- // 예: "home.hero.title", "why-futureplay.hero.subtitle"
20
- // 구조: {section}.{component}.{property}
21
- // 섹션 분류 (페이지 단위)
22
- section: text('section').notNull(),
23
- // 예: "home", "why-futureplay", "team"
24
- // 타입
25
- type: text('type').notNull(),
26
- // "text" | "image" | "video" | "file" | "object"
27
- // 기본값
28
- defaultValue: text('default_value'),
29
- // 라벨의 기본값 (sync 시 설정)
30
- // 설명
31
- description: text('description'),
32
- // 라벨에 대한 설명 (optional)
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
- index('cms_labels_section_idx').on(table.section),
45
- // 인덱스: key로 조회 최적화 (unique 제약으로 자동 생성되지만 명시)
46
- index('cms_labels_key_idx').on(table.key),
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,"file":"cms-labels.js","sourceRoot":"","sources":["../../src/entities/cms-labels.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,uCAAuC;AACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;IAC5C,cAAc;IACd,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAE7B,SAAS;IACT,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IACnC,uDAAuD;IACvD,uCAAuC;IAEvC,iBAAiB;IACjB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IAClC,sCAAsC;IAEtC,OAAO;IACP,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,iDAAiD;IAEjD,MAAM;IACN,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC;IACnC,sBAAsB;IAEtB,KAAK;IACL,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;IAChC,uBAAuB;IAEvB,eAAe;IACf,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAC9C,gBAAgB;IAChB,yBAAyB;IAEzB,SAAS;IACT,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAE7B,QAAQ;IACR,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACjF,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CACpF,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;IACV,kBAAkB;IAClB,KAAK,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IAEjD,6CAA6C;IAC7C,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;CAC5C,CAAC,CAAC"}
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
- export declare const cmsPublishedCache: import("drizzle-orm/pg-core").PgTableWithColumns<{
15
+ declare const cmsPublishedCache: drizzle_orm_pg_core.PgTableWithColumns<{
14
16
  name: "published_cache";
15
17
  schema: string;
16
18
  columns: {
17
- id: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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: import("drizzle-orm/pg-core").PgColumn<{
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
- export type CmsPublishedCache = typeof cmsPublishedCache.$inferSelect;
140
- export type NewCmsPublishedCache = typeof cmsPublishedCache.$inferInsert;
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 };