@simplysm/sd-claude 14.0.47 → 14.0.48

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 (130) hide show
  1. package/{claude/references/sd-simplysm14/sd-claude/usage.md → README.md} +2 -2
  2. package/claude/rules/sd-claude-rules.md +25 -10
  3. package/claude/rules/sd-options.md +11 -6
  4. package/claude/sd-subagent-start.sh +6 -0
  5. package/claude/settings.json +1 -12
  6. package/claude/skills/sd-check/SKILL.md +18 -9
  7. package/claude/skills/sd-claude-docs/SKILL.md +30 -58
  8. package/claude/skills/sd-claude-docs/references/package-claudemd.md +12 -0
  9. package/claude/skills/sd-claude-docs/references/package-doc-gen.md +22 -12
  10. package/claude/skills/sd-commit/SKILL.md +1 -1
  11. package/claude/skills/sd-debug/SKILL.md +5 -3
  12. package/claude/skills/sd-deliverable/SKILL.md +1 -1
  13. package/claude/skills/sd-dev/SKILL.md +14 -9
  14. package/claude/skills/sd-doc-extract/SKILL.md +8 -10
  15. package/claude/skills/sd-doc-extract/_common.py +8 -1
  16. package/claude/skills/sd-doc-extract/_extract_docx.py +74 -34
  17. package/claude/skills/sd-doc-extract/_extract_pdf.py +12 -1
  18. package/claude/skills/sd-doc-extract/_extract_pptx.py +103 -23
  19. package/claude/skills/sd-doc-extract/_extract_xlsb.py +93 -4
  20. package/claude/skills/sd-doc-extract/_extract_xlsx.py +98 -36
  21. package/claude/skills/sd-doc-extract/extract.py +22 -3
  22. package/claude/skills/sd-inner-clarify/SKILL.md +78 -0
  23. package/claude/skills/sd-inner-debug/SKILL.md +1 -1
  24. package/claude/skills/sd-inner-review/SKILL.md +13 -0
  25. package/claude/skills/sd-issue/SKILL.md +1 -1
  26. package/claude/skills/sd-outlook/SKILL.md +1 -1
  27. package/claude/skills/sd-plan/SKILL.md +50 -17
  28. package/claude/skills/sd-prompt/SKILL.md +180 -178
  29. package/claude/skills/sd-prompt/references/eval-runner.md +5 -30
  30. package/claude/skills/sd-prompt/references/sd-eval-env-template.md +23 -0
  31. package/claude/skills/sd-refactor/SKILL.md +2 -2
  32. package/claude/skills/sd-tdd/SKILL.md +40 -10
  33. package/claude/skills/sd-use/SKILL.md +84 -80
  34. package/claude/skills/sd-wbs/SKILL.md +84 -27
  35. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/assets.md +2 -3
  36. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/hooks.md +7 -6
  37. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/scripts.md +1 -9
  38. package/package.json +3 -2
  39. package/scripts/sync.mjs +4 -2
  40. package/claude/references/sd-simplysm14/angular/docs/bootstrap.md +0 -48
  41. package/claude/references/sd-simplysm14/angular/docs/directives.md +0 -236
  42. package/claude/references/sd-simplysm14/angular/docs/features.md +0 -379
  43. package/claude/references/sd-simplysm14/angular/docs/pipes.md +0 -32
  44. package/claude/references/sd-simplysm14/angular/docs/plugins.md +0 -37
  45. package/claude/references/sd-simplysm14/angular/docs/provider-types.md +0 -283
  46. package/claude/references/sd-simplysm14/angular/docs/providers.md +0 -379
  47. package/claude/references/sd-simplysm14/angular/docs/styling.md +0 -222
  48. package/claude/references/sd-simplysm14/angular/docs/type-utilities.md +0 -250
  49. package/claude/references/sd-simplysm14/angular/docs/ui-data.md +0 -275
  50. package/claude/references/sd-simplysm14/angular/docs/ui-form.md +0 -490
  51. package/claude/references/sd-simplysm14/angular/docs/ui-layout.md +0 -140
  52. package/claude/references/sd-simplysm14/angular/docs/ui-navigation.md +0 -273
  53. package/claude/references/sd-simplysm14/angular/docs/ui-overlay.md +0 -157
  54. package/claude/references/sd-simplysm14/angular/docs/ui-visual.md +0 -127
  55. package/claude/references/sd-simplysm14/angular/docs/utils.md +0 -295
  56. package/claude/references/sd-simplysm14/angular/usage.md +0 -489
  57. package/claude/references/sd-simplysm14/capacitor-plugin-auto-update/usage.md +0 -182
  58. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/file-operations.md +0 -154
  59. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/permissions.md +0 -84
  60. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/storage-paths.md +0 -107
  61. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/types.md +0 -83
  62. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/usage.md +0 -133
  63. package/claude/references/sd-simplysm14/capacitor-plugin-intent/usage.md +0 -203
  64. package/claude/references/sd-simplysm14/capacitor-plugin-usb-storage/usage.md +0 -258
  65. package/claude/references/sd-simplysm14/core-browser/usage.md +0 -306
  66. package/claude/references/sd-simplysm14/core-common/docs/errors.md +0 -82
  67. package/claude/references/sd-simplysm14/core-common/docs/extensions.md +0 -167
  68. package/claude/references/sd-simplysm14/core-common/docs/features.md +0 -136
  69. package/claude/references/sd-simplysm14/core-common/docs/types.md +0 -245
  70. package/claude/references/sd-simplysm14/core-common/docs/utils.md +0 -591
  71. package/claude/references/sd-simplysm14/core-common/usage.md +0 -255
  72. package/claude/references/sd-simplysm14/core-node/docs/child-process.md +0 -182
  73. package/claude/references/sd-simplysm14/core-node/docs/features.md +0 -214
  74. package/claude/references/sd-simplysm14/core-node/docs/file-system.md +0 -509
  75. package/claude/references/sd-simplysm14/core-node/docs/file-watching.md +0 -139
  76. package/claude/references/sd-simplysm14/core-node/docs/logging.md +0 -180
  77. package/claude/references/sd-simplysm14/core-node/docs/path.md +0 -176
  78. package/claude/references/sd-simplysm14/core-node/docs/utilities-cpx.md +0 -194
  79. package/claude/references/sd-simplysm14/core-node/docs/utilities-fsx.md +0 -469
  80. package/claude/references/sd-simplysm14/core-node/docs/utilities-pathx.md +0 -151
  81. package/claude/references/sd-simplysm14/core-node/docs/worker-threads.md +0 -334
  82. package/claude/references/sd-simplysm14/core-node/docs/worker.md +0 -205
  83. package/claude/references/sd-simplysm14/core-node/usage.md +0 -259
  84. package/claude/references/sd-simplysm14/excel/docs/core-classes.md +0 -453
  85. package/claude/references/sd-simplysm14/excel/docs/types.md +0 -459
  86. package/claude/references/sd-simplysm14/excel/docs/utilities.md +0 -194
  87. package/claude/references/sd-simplysm14/excel/docs/wrapper.md +0 -73
  88. package/claude/references/sd-simplysm14/excel/usage.md +0 -134
  89. package/claude/references/sd-simplysm14/lint/usage.md +0 -130
  90. package/claude/references/sd-simplysm14/orm-common/docs/core.md +0 -188
  91. package/claude/references/sd-simplysm14/orm-common/docs/expression.md +0 -190
  92. package/claude/references/sd-simplysm14/orm-common/docs/models.md +0 -17
  93. package/claude/references/sd-simplysm14/orm-common/docs/query-builder.md +0 -97
  94. package/claude/references/sd-simplysm14/orm-common/docs/queryable-executable.md +0 -250
  95. package/claude/references/sd-simplysm14/orm-common/docs/schema-builders.md +0 -364
  96. package/claude/references/sd-simplysm14/orm-common/docs/types.md +0 -522
  97. package/claude/references/sd-simplysm14/orm-common/usage.md +0 -229
  98. package/claude/references/sd-simplysm14/orm-node/docs/connections.md +0 -137
  99. package/claude/references/sd-simplysm14/orm-node/docs/core.md +0 -131
  100. package/claude/references/sd-simplysm14/orm-node/docs/types.md +0 -173
  101. package/claude/references/sd-simplysm14/orm-node/usage.md +0 -143
  102. package/claude/references/sd-simplysm14/sd-cli/usage.md +0 -782
  103. package/claude/references/sd-simplysm14/service-client/docs/features.md +0 -217
  104. package/claude/references/sd-simplysm14/service-client/docs/main.md +0 -148
  105. package/claude/references/sd-simplysm14/service-client/docs/protocol.md +0 -53
  106. package/claude/references/sd-simplysm14/service-client/docs/transport.md +0 -131
  107. package/claude/references/sd-simplysm14/service-client/docs/types.md +0 -129
  108. package/claude/references/sd-simplysm14/service-client/usage.md +0 -202
  109. package/claude/references/sd-simplysm14/service-common/docs/app-structure.md +0 -175
  110. package/claude/references/sd-simplysm14/service-common/docs/events.md +0 -64
  111. package/claude/references/sd-simplysm14/service-common/docs/protocol.md +0 -331
  112. package/claude/references/sd-simplysm14/service-common/docs/service-types.md +0 -90
  113. package/claude/references/sd-simplysm14/service-common/docs/types.md +0 -19
  114. package/claude/references/sd-simplysm14/service-common/usage.md +0 -154
  115. package/claude/references/sd-simplysm14/service-server/docs/auth.md +0 -64
  116. package/claude/references/sd-simplysm14/service-server/docs/core.md +0 -174
  117. package/claude/references/sd-simplysm14/service-server/docs/legacy.md +0 -25
  118. package/claude/references/sd-simplysm14/service-server/docs/main.md +0 -88
  119. package/claude/references/sd-simplysm14/service-server/docs/protocol.md +0 -33
  120. package/claude/references/sd-simplysm14/service-server/docs/services.md +0 -94
  121. package/claude/references/sd-simplysm14/service-server/docs/transport-http.md +0 -93
  122. package/claude/references/sd-simplysm14/service-server/docs/transport-socket.md +0 -119
  123. package/claude/references/sd-simplysm14/service-server/docs/types.md +0 -36
  124. package/claude/references/sd-simplysm14/service-server/docs/utils.md +0 -22
  125. package/claude/references/sd-simplysm14/service-server/usage.md +0 -171
  126. package/claude/references/sd-simplysm14/storage/usage.md +0 -301
  127. package/claude/references/sd-simplysm14.md +0 -35
  128. package/claude/rules/sd-clarify.md +0 -23
  129. package/claude/sd-session-start.sh +0 -10
  130. /package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/cli.md +0 -0
@@ -1,522 +0,0 @@
1
- # Types
2
-
3
- ## `Dialect`
4
-
5
- 지원하는 Database dialect.
6
-
7
- ```typescript
8
- export type Dialect = "mysql" | "mssql" | "postgresql";
9
- ```
10
-
11
- - `mysql`: MySQL 8.0.14+
12
- - `mssql`: Microsoft SQL Server 2012+
13
- - `postgresql`: PostgreSQL 9.0+
14
-
15
- ## `dialects`
16
-
17
- 모든 Dialect 목록 배열. 테스트에서 dialect별 검증에 사용.
18
-
19
- ```typescript
20
- export const dialects: Dialect[] = ["mysql", "mssql", "postgresql"];
21
- ```
22
-
23
- ## `IsolationLevel`
24
-
25
- 트랜잭션 격리 수준.
26
-
27
- ```typescript
28
- export type IsolationLevel = "READ_UNCOMMITTED" | "READ_COMMITTED" | "REPEATABLE_READ" | "SERIALIZABLE";
29
- ```
30
-
31
- | Value | Description |
32
- |-------|-------------|
33
- | `READ_UNCOMMITTED` | 커밋되지 않은 데이터 읽기 가능 (Dirty Read) |
34
- | `READ_COMMITTED` | 커밋된 데이터만 읽기 (기본값) |
35
- | `REPEATABLE_READ` | 동일 query가 동일 결과 반환 보장 |
36
- | `SERIALIZABLE` | 완전 직렬화 (가장 엄격) |
37
-
38
- ## `DataRecord`
39
-
40
- 쿼리 결과 데이터 레코드 타입. 재귀적 구조로 중첩 관계(include) 결과를 표현한다.
41
-
42
- ```typescript
43
- export type DataRecord = {
44
- [key: string]: ColumnPrimitive | DataRecord | DataRecord[];
45
- };
46
- ```
47
-
48
- ## `DbContextExecutor`
49
-
50
- 실제 DB 연결과 쿼리 실행을 담당하는 인터페이스. `orm-node`의 `NodeDbContextExecutor` 또는 서비스 클라이언트 구현으로 제공한다.
51
-
52
- ```typescript
53
- export interface DbContextExecutor {
54
- connect(): Promise<void>;
55
- close(): Promise<void>;
56
- beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
57
- commitTransaction(): Promise<void>;
58
- rollbackTransaction(): Promise<void>;
59
- executeDefs<T = DataRecord>(defs: QueryDef[], resultMetas?: (ResultMeta | undefined)[]): Promise<T[][]>;
60
- }
61
- ```
62
-
63
- | Method | Description |
64
- |--------|-------------|
65
- | `connect()` | DB 연결 수립 |
66
- | `close()` | DB 연결 종료 |
67
- | `beginTransaction(isolationLevel?)` | 트랜잭션 시작 |
68
- | `commitTransaction()` | 트랜잭션 커밋 |
69
- | `rollbackTransaction()` | 트랜잭션 롤백 |
70
- | `executeDefs(defs, resultMetas?)` | QueryDef 배열 실행 |
71
-
72
- ## `QueryBuildResult`
73
-
74
- `QueryBuilder.build()` 반환 타입.
75
-
76
- ```typescript
77
- export interface QueryBuildResult {
78
- sql: string;
79
- resultSetIndex?: number;
80
- resultSetStride?: number;
81
- }
82
- ```
83
-
84
- | Field | Type | Description |
85
- |-------|------|-------------|
86
- | `sql` | `string` | 빌드된 SQL 문자열 |
87
- | `resultSetIndex` | `number \| undefined` | 결과를 가져올 결과 셋 index (기본값: 0) |
88
- | `resultSetStride` | `number \| undefined` | 다중 결과에서 N번째마다 결과 셋 추출 |
89
-
90
- ## `ResultMeta`
91
-
92
- SELECT 결과를 TypeScript 객체로 변환할 때 사용하는 메타데이터.
93
-
94
- ```typescript
95
- export interface ResultMeta {
96
- columns: Record<string, ColumnPrimitiveStr>;
97
- joins: Record<string, { isSingle: boolean }>;
98
- }
99
- ```
100
-
101
- | Field | Type | Description |
102
- |-------|------|-------------|
103
- | `columns` | `Record<string, ColumnPrimitiveStr>` | Column 이름 -> 타입 문자열 매핑 |
104
- | `joins` | `Record<string, { isSingle: boolean }>` | JOIN alias -> 단일/배열 구분 |
105
-
106
- ## `Migration`
107
-
108
- Database migration 정의. Schema 변경을 버전 관리한다.
109
-
110
- ```typescript
111
- export interface Migration {
112
- name: string;
113
- up: (db: DbContextBase & DbContextDdlMethods) => Promise<void>;
114
- }
115
- ```
116
-
117
- | Field | Type | Description |
118
- |-------|------|-------------|
119
- | `name` | `string` | 고유 Migration 이름 (타임스탬프 권장) |
120
- | `up` | `(db) => Promise<void>` | Migration 실행 함수 |
121
-
122
- ## `parseQueryResult`
123
-
124
- DB 쿼리 결과를 TypeScript 객체로 변환한다. 타입 파싱 + JOIN 결과 중첩을 처리한다.
125
-
126
- ```typescript
127
- export async function parseQueryResult<TRecord>(
128
- rawResults: Record<string, unknown>[],
129
- meta: ResultMeta,
130
- ): Promise<TRecord[] | undefined>;
131
- ```
132
-
133
- - meta 필수: meta 없이는 이 함수를 호출할 필요 없음 (입력 = 출력)
134
- - 빈 결과 처리: 입력 배열이 비어있거나 파싱 후 모든 레코드가 빈 객체이면 undefined 반환
135
- - async 전용: 대규모 처리 시 이벤트 루프 양보 (100건마다)
136
- - JOIN 있음: Map 기반 그룹핑으로 O(n) 복잡도
137
-
138
- ## `DataType`
139
-
140
- SQL 데이터 타입 정의. discriminated union으로 `type` 필드로 분기한다.
141
-
142
- ```typescript
143
- export type DataType =
144
- | { type: "int" }
145
- | { type: "bigint" }
146
- | { type: "float" }
147
- | { type: "double" }
148
- | { type: "decimal"; precision: number; scale?: number }
149
- | { type: "varchar"; length: number }
150
- | { type: "char"; length: number }
151
- | { type: "text" }
152
- | { type: "binary" }
153
- | { type: "boolean" }
154
- | { type: "datetime" }
155
- | { type: "date" }
156
- | { type: "time" }
157
- | { type: "uuid" };
158
- ```
159
-
160
- ## `ColumnPrimitiveMap`
161
-
162
- TypeScript 타입 이름(문자열) -> 실제 TypeScript 타입 매핑.
163
-
164
- ```typescript
165
- export type ColumnPrimitiveMap = {
166
- string: string;
167
- number: number;
168
- boolean: boolean;
169
- DateTime: DateTime;
170
- DateOnly: DateOnly;
171
- Time: Time;
172
- Uuid: Uuid;
173
- Bytes: Bytes;
174
- };
175
- ```
176
-
177
- ## `ColumnPrimitiveStr`
178
-
179
- Column 원시 타입 이름 문자열. `keyof ColumnPrimitiveMap`.
180
-
181
- ```typescript
182
- export type ColumnPrimitiveStr = "string" | "number" | "boolean" | "DateTime" | "DateOnly" | "Time" | "Uuid" | "Bytes";
183
- ```
184
-
185
- ## `ColumnPrimitive`
186
-
187
- Column에 저장 가능한 모든 원시 타입. undefined는 NULL을 나타냄.
188
-
189
- ```typescript
190
- export type ColumnPrimitive = string | number | boolean | DateTime | DateOnly | Time | Uuid | Bytes | undefined;
191
- ```
192
-
193
- ## `dataTypeStrToColumnPrimitiveStr`
194
-
195
- SQL DataType 문자열 -> TypeScript 타입 이름 매핑.
196
-
197
- ```typescript
198
- export const dataTypeStrToColumnPrimitiveStr: {
199
- int: "number"; bigint: "number"; float: "number"; double: "number"; decimal: "number";
200
- varchar: "string"; char: "string"; text: "string";
201
- binary: "Bytes"; boolean: "boolean";
202
- datetime: "DateTime"; date: "DateOnly"; time: "Time"; uuid: "Uuid";
203
- };
204
- ```
205
-
206
- ## `InferColumnPrimitiveFromDataType`
207
-
208
- DataType에서 TypeScript 타입 추론.
209
-
210
- ```typescript
211
- export type InferColumnPrimitiveFromDataType<TDataType extends DataType> =
212
- ColumnPrimitiveMap[(typeof dataTypeStrToColumnPrimitiveStr)[TDataType["type"]]];
213
- ```
214
-
215
- ## `inferColumnPrimitiveStr`
216
-
217
- 런타임 값에서 ColumnPrimitiveStr을 추론한다. NULL 값으로는 추론 불가 (에러 발생).
218
-
219
- ```typescript
220
- export function inferColumnPrimitiveStr(value: ColumnPrimitive): ColumnPrimitiveStr;
221
- ```
222
-
223
- ## `ColumnMeta`
224
-
225
- Column 메타데이터. ColumnBuilder에서 생성되어 TableBuilder에 전달된다.
226
-
227
- ```typescript
228
- export interface ColumnMeta {
229
- type: ColumnPrimitiveStr;
230
- dataType: DataType;
231
- autoIncrement?: boolean;
232
- nullable?: boolean;
233
- default?: ColumnPrimitive;
234
- description?: string;
235
- }
236
- ```
237
-
238
- | Field | Type | Description |
239
- |-------|------|-------------|
240
- | `type` | `ColumnPrimitiveStr` | TypeScript 타입 이름 |
241
- | `dataType` | `DataType` | SQL 데이터 타입 |
242
- | `autoIncrement` | `boolean \| undefined` | 자동 증가 여부 |
243
- | `nullable` | `boolean \| undefined` | NULL 허용 여부 |
244
- | `default` | `ColumnPrimitive \| undefined` | 기본값 |
245
- | `description` | `string \| undefined` | Column 설명 |
246
-
247
- ## `DateUnit`
248
-
249
- 날짜 단위.
250
-
251
- ```typescript
252
- export type DateUnit = "year" | "month" | "day" | "hour" | "minute" | "second";
253
- ```
254
-
255
- ## `Expr`
256
-
257
- 모든 표현식 AST의 유니온 타입. ExprColumn, ExprValue, ExprRaw와 60+ 개의 개별 표현식 타입의 합집합.
258
-
259
- ```typescript
260
- export type Expr = ExprColumn | ExprValue | ExprRaw | ExprConcat | ExprLeft | ... | ExprWindow | ExprSubquery;
261
- ```
262
-
263
- 주요 표현식 인터페이스 (각각 `type` discriminant 필드를 가짐):
264
-
265
- | Interface | type | Description |
266
- |-----------|------|-------------|
267
- | `ExprColumn` | `"column"` | Column 참조 (`path: string[]`) |
268
- | `ExprValue` | `"value"` | 리터럴 값 (`value: unknown`) |
269
- | `ExprRaw` | `"raw"` | Raw SQL (`sql: string, params: Expr[]`) |
270
- | `ExprEq` | `"eq"` | 동등 비교 |
271
- | `ExprGt` | `"gt"` | 초과 비교 |
272
- | `ExprLt` | `"lt"` | 미만 비교 |
273
- | `ExprGte` | `"gte"` | 이상 비교 |
274
- | `ExprLte` | `"lte"` | 이하 비교 |
275
- | `ExprBetween` | `"between"` | 범위 비교 |
276
- | `ExprIsNull` | `"null"` | NULL 체크 |
277
- | `ExprLike` | `"like"` | LIKE 패턴 |
278
- | `ExprRegexp` | `"regexp"` | 정규식 매칭 |
279
- | `ExprIn` | `"in"` | IN 목록 |
280
- | `ExprInQuery` | `"inQuery"` | IN 서브쿼리 |
281
- | `ExprExists` | `"exists"` | EXISTS 서브쿼리 |
282
- | `ExprNot` | `"not"` | NOT |
283
- | `ExprAnd` | `"and"` | AND |
284
- | `ExprOr` | `"or"` | OR |
285
- | `ExprConcat` | `"concat"` | 문자열 연결 |
286
- | `ExprCount` | `"count"` | COUNT 집계 |
287
- | `ExprSum` | `"sum"` | SUM 집계 |
288
- | `ExprAvg` | `"avg"` | AVG 집계 |
289
- | `ExprMax` | `"max"` | MAX 집계 |
290
- | `ExprMin` | `"min"` | MIN 집계 |
291
- | `ExprWindow` | `"window"` | Window 함수 |
292
- | `ExprSubquery` | `"subquery"` | 스칼라 서브쿼리 |
293
- | `ExprCast` | `"cast"` | 타입 변환 |
294
- | `ExprSwitch` | `"switch"` | CASE WHEN |
295
- | `ExprIf` | `"if"` | IF 조건 |
296
- | `ExprCoalesce` | `"coalesce"` | COALESCE |
297
-
298
- ## `WhereExpr`
299
-
300
- WHERE 절 표현식 AST 유니온 타입.
301
-
302
- ```typescript
303
- export type WhereExpr = ExprEq | ExprGt | ExprLt | ExprGte | ExprLte | ExprBetween | ExprIsNull | ExprLike | ExprRegexp | ExprIn | ExprInQuery | ExprExists | ExprNot | ExprAnd | ExprOr;
304
- ```
305
-
306
- ## `WinSpec`
307
-
308
- Window 함수 스펙.
309
-
310
- ```typescript
311
- export interface WinSpec {
312
- partitionBy?: Expr[];
313
- orderBy?: [Expr, ("ASC" | "DESC")?][];
314
- }
315
- ```
316
-
317
- | Field | Type | Description |
318
- |-------|------|-------------|
319
- | `partitionBy` | `Expr[] \| undefined` | 파티션 기준 표현식 |
320
- | `orderBy` | `[Expr, ("ASC" \| "DESC")?][] \| undefined` | 정렬 기준 |
321
-
322
- ## `WinFn`
323
-
324
- Window 함수 유니온 타입.
325
-
326
- ```typescript
327
- export type WinFn = WinFnRowNumber | WinFnRank | WinFnDenseRank | WinFnNtile | WinFnLag | WinFnLead | WinFnFirstValue | WinFnLastValue | WinFnSum | WinFnAvg | WinFnCount | WinFnMin | WinFnMax;
328
- ```
329
-
330
- ## `QueryDef`
331
-
332
- 모든 쿼리 정의의 유니온 타입.
333
-
334
- ```typescript
335
- export type QueryDef = SelectQueryDef | InsertQueryDef | InsertIfNotExistsQueryDef | InsertIntoQueryDef | UpdateQueryDef | DeleteQueryDef | UpsertQueryDef | ExecProcQueryDef | /* DDL types */;
336
- ```
337
-
338
- ## `SelectQueryDef`
339
-
340
- SELECT 쿼리 정의.
341
-
342
- ```typescript
343
- export interface SelectQueryDef {
344
- type: "select";
345
- from?: QueryDefObjectName | SelectQueryDef | SelectQueryDef[] | string;
346
- as: string;
347
- select?: Record<string, Expr>;
348
- distinct?: boolean;
349
- top?: number;
350
- lock?: boolean;
351
- where?: WhereExpr[];
352
- joins?: SelectQueryDefJoin[];
353
- orderBy?: [Expr, ("ASC" | "DESC")?][];
354
- limit?: [number, number];
355
- groupBy?: Expr[];
356
- having?: WhereExpr[];
357
- with?: { name: string; base: SelectQueryDef; recursive: SelectQueryDef };
358
- }
359
- ```
360
-
361
- ## `InsertQueryDef`
362
-
363
- INSERT 쿼리 정의.
364
-
365
- ```typescript
366
- export interface InsertQueryDef {
367
- type: "insert";
368
- table: QueryDefObjectName;
369
- records: Record<string, unknown>[];
370
- overrideIdentity?: boolean;
371
- output?: CudOutputDef;
372
- }
373
- ```
374
-
375
- ## `UpdateQueryDef`
376
-
377
- UPDATE 쿼리 정의.
378
-
379
- ```typescript
380
- export interface UpdateQueryDef {
381
- type: "update";
382
- table: QueryDefObjectName;
383
- as: string;
384
- record: Record<string, Expr>;
385
- top?: number;
386
- where?: WhereExpr[];
387
- joins?: SelectQueryDefJoin[];
388
- limit?: [number, number];
389
- output?: CudOutputDef;
390
- }
391
- ```
392
-
393
- ## `DeleteQueryDef`
394
-
395
- DELETE 쿼리 정의.
396
-
397
- ```typescript
398
- export interface DeleteQueryDef {
399
- type: "delete";
400
- table: QueryDefObjectName;
401
- as: string;
402
- top?: number;
403
- where?: WhereExpr[];
404
- joins?: SelectQueryDefJoin[];
405
- limit?: [number, number];
406
- output?: CudOutputDef;
407
- }
408
- ```
409
-
410
- ## `UpsertQueryDef`
411
-
412
- UPSERT 쿼리 정의.
413
-
414
- ```typescript
415
- export interface UpsertQueryDef {
416
- type: "upsert";
417
- table: QueryDefObjectName;
418
- existsSelectQuery: Omit<SelectQueryDef, "select">;
419
- updateRecord: Record<string, Expr>;
420
- insertRecord: Record<string, Expr>;
421
- output?: CudOutputDef;
422
- }
423
- ```
424
-
425
- ## `QueryDefObjectName`
426
-
427
- 테이블/뷰 이름 정의.
428
-
429
- ```typescript
430
- export interface QueryDefObjectName {
431
- database?: string;
432
- schema?: string;
433
- name: string;
434
- }
435
- ```
436
-
437
- | Field | Type | Description |
438
- |-------|------|-------------|
439
- | `database` | `string \| undefined` | 데이터베이스 이름 |
440
- | `schema` | `string \| undefined` | 스키마 이름 |
441
- | `name` | `string` | 테이블/뷰 이름 |
442
-
443
- ## `CudOutputDef`
444
-
445
- CUD 작업 OUTPUT 절 정의.
446
-
447
- ```typescript
448
- export interface CudOutputDef {
449
- columns: string[];
450
- pkColNames: string[];
451
- aiColName?: string;
452
- }
453
- ```
454
-
455
- | Field | Type | Description |
456
- |-------|------|-------------|
457
- | `columns` | `string[]` | 반환할 column 이름 |
458
- | `pkColNames` | `string[]` | PK column 이름 |
459
- | `aiColName` | `string \| undefined` | AutoIncrement column 이름 |
460
-
461
- ## `SelectQueryDefJoin`
462
-
463
- JOIN 쿼리 정의.
464
-
465
- ```typescript
466
- export interface SelectQueryDefJoin extends SelectQueryDef {
467
- as: string;
468
- isSingle: boolean;
469
- }
470
- ```
471
-
472
- ## `DDL_TYPES`
473
-
474
- DDL 타입 문자열 목록.
475
-
476
- ```typescript
477
- export const DDL_TYPES = [
478
- "clearSchema", "createTable", "dropTable", "renameTable", "truncate",
479
- "addColumn", "dropColumn", "modifyColumn", "renameColumn",
480
- "dropPrimaryKey", "addPrimaryKey", "addForeignKey", "dropForeignKey", "addIndex", "dropIndex",
481
- "createView", "dropView", "createProc", "dropProc",
482
- ] as const satisfies readonly DdlQueryDef["type"][];
483
- ```
484
-
485
- ## `DdlType`
486
-
487
- DDL 타입 유니온.
488
-
489
- ```typescript
490
- export type DdlType = (typeof DDL_TYPES)[number];
491
- ```
492
-
493
- ## DDL QueryDef 인터페이스
494
-
495
- 각 DDL 작업을 위한 QueryDef 인터페이스. 모두 `type` discriminant 필드를 가진다.
496
-
497
- | Interface | type | Description |
498
- |-----------|------|-------------|
499
- | `SwitchFkQueryDef` | `"switchFk"` | FK 제약조건 활성화/비활성화 |
500
- | `ClearSchemaQueryDef` | `"clearSchema"` | 스키마 전체 삭제 |
501
- | `CreateTableQueryDef` | `"createTable"` | 테이블 생성 |
502
- | `DropTableQueryDef` | `"dropTable"` | 테이블 삭제 |
503
- | `RenameTableQueryDef` | `"renameTable"` | 테이블 이름 변경 |
504
- | `TruncateQueryDef` | `"truncate"` | 테이블 데이터 전체 삭제 |
505
- | `AddColumnQueryDef` | `"addColumn"` | Column 추가 |
506
- | `DropColumnQueryDef` | `"dropColumn"` | Column 삭제 |
507
- | `ModifyColumnQueryDef` | `"modifyColumn"` | Column 수정 |
508
- | `RenameColumnQueryDef` | `"renameColumn"` | Column 이름 변경 |
509
- | `DropPrimaryKeyQueryDef` | `"dropPrimaryKey"` | PK 삭제 |
510
- | `AddPrimaryKeyQueryDef` | `"addPrimaryKey"` | PK 추가 |
511
- | `AddForeignKeyQueryDef` | `"addForeignKey"` | FK 추가 |
512
- | `DropForeignKeyQueryDef` | `"dropForeignKey"` | FK 삭제 |
513
- | `AddIndexQueryDef` | `"addIndex"` | Index 추가 |
514
- | `DropIndexQueryDef` | `"dropIndex"` | Index 삭제 |
515
- | `CreateViewQueryDef` | `"createView"` | View 생성 |
516
- | `DropViewQueryDef` | `"dropView"` | View 삭제 |
517
- | `CreateProcQueryDef` | `"createProc"` | Procedure 생성 |
518
- | `DropProcQueryDef` | `"dropProc"` | Procedure 삭제 |
519
- | `SchemaExistsQueryDef` | `"schemaExists"` | 스키마 존재 확인 |
520
- | `ExecProcQueryDef` | `"execProc"` | Procedure 실행 |
521
- | `InsertIfNotExistsQueryDef` | `"insertIfNotExists"` | 조건부 INSERT |
522
- | `InsertIntoQueryDef` | `"insertInto"` | INSERT INTO SELECT |