@simplysm/sd-claude 14.0.46 → 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 (127) hide show
  1. package/{claude/references/sd-simplysm14/sd-claude/usage.md → README.md} +2 -2
  2. package/claude/rules/sd-claude-rules.md +27 -9
  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 +29 -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-debug/SKILL.md +5 -3
  11. package/claude/skills/sd-deliverable/SKILL.md +0 -1
  12. package/claude/skills/sd-dev/SKILL.md +14 -9
  13. package/claude/skills/sd-doc-extract/SKILL.md +7 -9
  14. package/claude/skills/sd-doc-extract/_common.py +8 -1
  15. package/claude/skills/sd-doc-extract/_extract_docx.py +74 -34
  16. package/claude/skills/sd-doc-extract/_extract_pdf.py +12 -1
  17. package/claude/skills/sd-doc-extract/_extract_pptx.py +103 -23
  18. package/claude/skills/sd-doc-extract/_extract_xlsb.py +93 -4
  19. package/claude/skills/sd-doc-extract/_extract_xlsx.py +98 -36
  20. package/claude/skills/sd-doc-extract/extract.py +22 -3
  21. package/claude/skills/sd-inner-clarify/SKILL.md +78 -0
  22. package/claude/skills/sd-inner-debug/SKILL.md +1 -1
  23. package/claude/skills/sd-inner-review/SKILL.md +13 -0
  24. package/claude/skills/sd-plan/SKILL.md +50 -17
  25. package/claude/skills/sd-prompt/SKILL.md +180 -178
  26. package/claude/skills/sd-prompt/references/eval-runner.md +5 -31
  27. package/claude/skills/sd-prompt/references/sd-eval-env-template.md +23 -0
  28. package/claude/skills/sd-refactor/SKILL.md +2 -2
  29. package/claude/skills/sd-tdd/SKILL.md +46 -10
  30. package/claude/skills/sd-use/SKILL.md +84 -80
  31. package/claude/skills/sd-wbs/SKILL.md +85 -27
  32. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/assets.md +2 -3
  33. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/hooks.md +7 -6
  34. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/scripts.md +1 -9
  35. package/package.json +3 -2
  36. package/scripts/sync.mjs +4 -2
  37. package/claude/references/sd-simplysm14/angular/docs/bootstrap.md +0 -48
  38. package/claude/references/sd-simplysm14/angular/docs/directives.md +0 -236
  39. package/claude/references/sd-simplysm14/angular/docs/features.md +0 -379
  40. package/claude/references/sd-simplysm14/angular/docs/pipes.md +0 -32
  41. package/claude/references/sd-simplysm14/angular/docs/plugins.md +0 -37
  42. package/claude/references/sd-simplysm14/angular/docs/provider-types.md +0 -283
  43. package/claude/references/sd-simplysm14/angular/docs/providers.md +0 -370
  44. package/claude/references/sd-simplysm14/angular/docs/styling.md +0 -222
  45. package/claude/references/sd-simplysm14/angular/docs/type-utilities.md +0 -250
  46. package/claude/references/sd-simplysm14/angular/docs/ui-data.md +0 -275
  47. package/claude/references/sd-simplysm14/angular/docs/ui-form.md +0 -490
  48. package/claude/references/sd-simplysm14/angular/docs/ui-layout.md +0 -140
  49. package/claude/references/sd-simplysm14/angular/docs/ui-navigation.md +0 -241
  50. package/claude/references/sd-simplysm14/angular/docs/ui-overlay.md +0 -157
  51. package/claude/references/sd-simplysm14/angular/docs/ui-visual.md +0 -127
  52. package/claude/references/sd-simplysm14/angular/docs/utils.md +0 -295
  53. package/claude/references/sd-simplysm14/angular/usage.md +0 -489
  54. package/claude/references/sd-simplysm14/capacitor-plugin-auto-update/usage.md +0 -182
  55. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/file-operations.md +0 -154
  56. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/permissions.md +0 -84
  57. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/storage-paths.md +0 -107
  58. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/types.md +0 -83
  59. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/usage.md +0 -133
  60. package/claude/references/sd-simplysm14/capacitor-plugin-intent/usage.md +0 -203
  61. package/claude/references/sd-simplysm14/capacitor-plugin-usb-storage/usage.md +0 -258
  62. package/claude/references/sd-simplysm14/core-browser/usage.md +0 -306
  63. package/claude/references/sd-simplysm14/core-common/docs/errors.md +0 -82
  64. package/claude/references/sd-simplysm14/core-common/docs/extensions.md +0 -167
  65. package/claude/references/sd-simplysm14/core-common/docs/features.md +0 -136
  66. package/claude/references/sd-simplysm14/core-common/docs/types.md +0 -245
  67. package/claude/references/sd-simplysm14/core-common/docs/utils.md +0 -591
  68. package/claude/references/sd-simplysm14/core-common/usage.md +0 -255
  69. package/claude/references/sd-simplysm14/core-node/docs/child-process.md +0 -182
  70. package/claude/references/sd-simplysm14/core-node/docs/features.md +0 -214
  71. package/claude/references/sd-simplysm14/core-node/docs/file-system.md +0 -509
  72. package/claude/references/sd-simplysm14/core-node/docs/file-watching.md +0 -139
  73. package/claude/references/sd-simplysm14/core-node/docs/logging.md +0 -180
  74. package/claude/references/sd-simplysm14/core-node/docs/path.md +0 -176
  75. package/claude/references/sd-simplysm14/core-node/docs/utilities-cpx.md +0 -194
  76. package/claude/references/sd-simplysm14/core-node/docs/utilities-fsx.md +0 -469
  77. package/claude/references/sd-simplysm14/core-node/docs/utilities-pathx.md +0 -151
  78. package/claude/references/sd-simplysm14/core-node/docs/worker-threads.md +0 -334
  79. package/claude/references/sd-simplysm14/core-node/docs/worker.md +0 -205
  80. package/claude/references/sd-simplysm14/core-node/usage.md +0 -259
  81. package/claude/references/sd-simplysm14/excel/docs/core-classes.md +0 -443
  82. package/claude/references/sd-simplysm14/excel/docs/types.md +0 -455
  83. package/claude/references/sd-simplysm14/excel/docs/utilities.md +0 -194
  84. package/claude/references/sd-simplysm14/excel/docs/wrapper.md +0 -73
  85. package/claude/references/sd-simplysm14/excel/usage.md +0 -134
  86. package/claude/references/sd-simplysm14/lint/usage.md +0 -130
  87. package/claude/references/sd-simplysm14/orm-common/docs/core.md +0 -188
  88. package/claude/references/sd-simplysm14/orm-common/docs/expression.md +0 -190
  89. package/claude/references/sd-simplysm14/orm-common/docs/models.md +0 -17
  90. package/claude/references/sd-simplysm14/orm-common/docs/query-builder.md +0 -97
  91. package/claude/references/sd-simplysm14/orm-common/docs/queryable-executable.md +0 -250
  92. package/claude/references/sd-simplysm14/orm-common/docs/schema-builders.md +0 -364
  93. package/claude/references/sd-simplysm14/orm-common/docs/types.md +0 -522
  94. package/claude/references/sd-simplysm14/orm-common/usage.md +0 -229
  95. package/claude/references/sd-simplysm14/orm-node/docs/connections.md +0 -137
  96. package/claude/references/sd-simplysm14/orm-node/docs/core.md +0 -131
  97. package/claude/references/sd-simplysm14/orm-node/docs/types.md +0 -173
  98. package/claude/references/sd-simplysm14/orm-node/usage.md +0 -143
  99. package/claude/references/sd-simplysm14/sd-cli/usage.md +0 -782
  100. package/claude/references/sd-simplysm14/service-client/docs/features.md +0 -217
  101. package/claude/references/sd-simplysm14/service-client/docs/main.md +0 -148
  102. package/claude/references/sd-simplysm14/service-client/docs/protocol.md +0 -53
  103. package/claude/references/sd-simplysm14/service-client/docs/transport.md +0 -131
  104. package/claude/references/sd-simplysm14/service-client/docs/types.md +0 -129
  105. package/claude/references/sd-simplysm14/service-client/usage.md +0 -202
  106. package/claude/references/sd-simplysm14/service-common/docs/app-structure.md +0 -175
  107. package/claude/references/sd-simplysm14/service-common/docs/events.md +0 -64
  108. package/claude/references/sd-simplysm14/service-common/docs/protocol.md +0 -331
  109. package/claude/references/sd-simplysm14/service-common/docs/service-types.md +0 -90
  110. package/claude/references/sd-simplysm14/service-common/docs/types.md +0 -19
  111. package/claude/references/sd-simplysm14/service-common/usage.md +0 -154
  112. package/claude/references/sd-simplysm14/service-server/docs/auth.md +0 -64
  113. package/claude/references/sd-simplysm14/service-server/docs/core.md +0 -174
  114. package/claude/references/sd-simplysm14/service-server/docs/legacy.md +0 -25
  115. package/claude/references/sd-simplysm14/service-server/docs/main.md +0 -88
  116. package/claude/references/sd-simplysm14/service-server/docs/protocol.md +0 -33
  117. package/claude/references/sd-simplysm14/service-server/docs/services.md +0 -94
  118. package/claude/references/sd-simplysm14/service-server/docs/transport-http.md +0 -93
  119. package/claude/references/sd-simplysm14/service-server/docs/transport-socket.md +0 -119
  120. package/claude/references/sd-simplysm14/service-server/docs/types.md +0 -36
  121. package/claude/references/sd-simplysm14/service-server/docs/utils.md +0 -22
  122. package/claude/references/sd-simplysm14/service-server/usage.md +0 -171
  123. package/claude/references/sd-simplysm14/storage/usage.md +0 -301
  124. package/claude/references/sd-simplysm14.md +0 -35
  125. package/claude/rules/sd-clarify.md +0 -23
  126. package/claude/sd-session-start.sh +0 -10
  127. /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 |