@pdg/drizzle-mssql 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/@types/MsSqlUpdateValues.d.cts +12 -6
- package/dist/@types/MsSqlUpdateValues.d.ts +12 -6
- package/dist/index.cjs +2 -2
- package/dist/index.esm.js +2 -2
- package/dist/mssqlTable.d.cts +3 -3
- package/dist/mssqlTable.d.ts +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -373,6 +373,8 @@ await user.editByPrimaryKey(user.updateValues({ name: '수정' }), id);
|
|
|
373
373
|
|
|
374
374
|
`insertBlocked()`, `insertAllowed()`, `updateBlocked()`, `updateAllowed()`, `updateRequired()`로 컬럼 정책을 지정할 수 있습니다. IDENTITY 컬럼은 기본적으로 등록과 수정이 금지되고 기본 키는 수정이 금지됩니다. 이러한 정책은 타입 검사와 런타임 검사에 반영됩니다. 기본 키 수정에는 `updateAllowed()`가 필요합니다. Drizzle의 SQL Server 입력 타입은 IDENTITY 컬럼을 제외하므로 `insertAllowed()`로도 IDENTITY 직접 등록을 지원하지 않습니다. 금지된 키는 값이 `undefined`여도 런타임에서 거부하며, 필수 수정 값이 누락되어도 오류가 발생합니다. `updatedAt().updateRequired()`는 생략 시 자동 시각으로 채웁니다.
|
|
375
375
|
|
|
376
|
+
`updateAllowed()`를 지정한 IDENTITY 컬럼은 `MsSqlUpdateValues`, `updateValues()`, `edit()`, `editByPrimaryKey()`의 수정 입력에 포함됩니다. 이는 라이브러리의 입력 정책 허용이며, SQL Server 자체의 제약을 해제하지는 않습니다. SQL Server는 IDENTITY 값의 `UPDATE`를 허용하지 않으므로 실제 DB 실행은 실패합니다. 기본 키 값을 변경해야 한다면 IDENTITY가 아닌 일반 컬럼을 사용하세요.
|
|
377
|
+
|
|
376
378
|
정책은 이 패키지의 `mssqlTable`과 `MsSqlQuery`에 적용됩니다. `mssqlTableCreator`, `mssqlSchema`, Drizzle의 원본 테이블 생성 함수와 `db.current()`의 원본 쿼리에는 적용되지 않습니다. 생성 함수를 직접 전달하지 않은 `MsSqlQuery`가 자동 시각을 필요로 하면 오류가 발생합니다. 생성 함수의 반환값은 컬럼 타입과 일치해야 합니다.
|
|
377
379
|
|
|
378
380
|
### 집계·SQL 표현식
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import type { MsSqlTable } from 'drizzle-orm/mssql-core/table';
|
|
2
2
|
import type { MsSqlUpdateSetSource } from 'drizzle-orm/mssql-core/query-builders/update';
|
|
3
|
+
import type { GetColumnData, Placeholder, SQL } from 'drizzle-orm';
|
|
3
4
|
import type { TablePolicies } from '../mssqlTable.cjs';
|
|
5
|
+
type UpdateSource<T extends MsSqlTable> = MsSqlUpdateSetSource<T> & {
|
|
6
|
+
[K in Exclude<keyof T['_']['columns'], keyof MsSqlUpdateSetSource<T>> as K extends keyof TablePolicies<T> ? TablePolicies<T>[K] extends {
|
|
7
|
+
update: 'allowed' | 'required';
|
|
8
|
+
} ? K : never : never]?: GetColumnData<T['_']['columns'][K], 'query'> | Placeholder | SQL;
|
|
9
|
+
};
|
|
4
10
|
type DefaultBlocked<T extends MsSqlTable, K> = K extends keyof T['_']['columns'] ? T['_']['columns'][K]['_']['isPrimaryKey'] extends true ? K : (T['_']['columns'][K]['_'] extends {
|
|
5
11
|
generated: infer G;
|
|
6
12
|
} ? undefined extends G ? false : keyof G extends never ? true : false : false) extends true ? K : never : never;
|
|
7
13
|
type Blocked<T extends MsSqlTable> = {
|
|
8
|
-
[K in keyof
|
|
14
|
+
[K in keyof UpdateSource<T>]-?: K extends keyof TablePolicies<T> ? TablePolicies<T>[K] extends {
|
|
9
15
|
timestamp: 'created';
|
|
10
16
|
} | {
|
|
11
17
|
update: 'blocked';
|
|
@@ -14,15 +20,15 @@ type Blocked<T extends MsSqlTable> = {
|
|
|
14
20
|
} ? never : K extends keyof T['_']['columns'] ? T['_']['columns'][K]['_']['isPrimaryKey'] extends true ? K : TablePolicies<T>[K] extends {
|
|
15
21
|
update: 'required';
|
|
16
22
|
} ? never : DefaultBlocked<T, K> : never : DefaultBlocked<T, K>;
|
|
17
|
-
}[keyof
|
|
23
|
+
}[keyof UpdateSource<T>] & keyof UpdateSource<T>;
|
|
18
24
|
type RequiredKeys<T extends MsSqlTable> = {
|
|
19
|
-
[K in keyof
|
|
25
|
+
[K in keyof UpdateSource<T>]-?: K extends keyof TablePolicies<T> ? TablePolicies<T>[K] extends {
|
|
20
26
|
update: 'required';
|
|
21
27
|
} ? TablePolicies<T>[K] extends {
|
|
22
28
|
timestamp: 'updated';
|
|
23
29
|
} ? never : K : never : never;
|
|
24
|
-
}[keyof
|
|
25
|
-
export type MsSqlUpdateValues<T extends MsSqlTable, B extends keyof
|
|
26
|
-
[K in Exclude<R | RequiredKeys<T>, B | Blocked<T>>]-?: Exclude<
|
|
30
|
+
}[keyof UpdateSource<T>] & keyof UpdateSource<T>;
|
|
31
|
+
export type MsSqlUpdateValues<T extends MsSqlTable, B extends keyof UpdateSource<T> = never, R extends Exclude<keyof UpdateSource<T>, B | Blocked<T>> = never> = Omit<UpdateSource<T>, B | Blocked<T> | R | RequiredKeys<T>> & {
|
|
32
|
+
[K in Exclude<R | RequiredKeys<T>, B | Blocked<T>>]-?: Exclude<UpdateSource<T>[K], undefined>;
|
|
27
33
|
};
|
|
28
34
|
export {};
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import type { MsSqlTable } from 'drizzle-orm/mssql-core/table';
|
|
2
2
|
import type { MsSqlUpdateSetSource } from 'drizzle-orm/mssql-core/query-builders/update';
|
|
3
|
+
import type { GetColumnData, Placeholder, SQL } from 'drizzle-orm';
|
|
3
4
|
import type { TablePolicies } from '../mssqlTable.js';
|
|
5
|
+
type UpdateSource<T extends MsSqlTable> = MsSqlUpdateSetSource<T> & {
|
|
6
|
+
[K in Exclude<keyof T['_']['columns'], keyof MsSqlUpdateSetSource<T>> as K extends keyof TablePolicies<T> ? TablePolicies<T>[K] extends {
|
|
7
|
+
update: 'allowed' | 'required';
|
|
8
|
+
} ? K : never : never]?: GetColumnData<T['_']['columns'][K], 'query'> | Placeholder | SQL;
|
|
9
|
+
};
|
|
4
10
|
type DefaultBlocked<T extends MsSqlTable, K> = K extends keyof T['_']['columns'] ? T['_']['columns'][K]['_']['isPrimaryKey'] extends true ? K : (T['_']['columns'][K]['_'] extends {
|
|
5
11
|
generated: infer G;
|
|
6
12
|
} ? undefined extends G ? false : keyof G extends never ? true : false : false) extends true ? K : never : never;
|
|
7
13
|
type Blocked<T extends MsSqlTable> = {
|
|
8
|
-
[K in keyof
|
|
14
|
+
[K in keyof UpdateSource<T>]-?: K extends keyof TablePolicies<T> ? TablePolicies<T>[K] extends {
|
|
9
15
|
timestamp: 'created';
|
|
10
16
|
} | {
|
|
11
17
|
update: 'blocked';
|
|
@@ -14,15 +20,15 @@ type Blocked<T extends MsSqlTable> = {
|
|
|
14
20
|
} ? never : K extends keyof T['_']['columns'] ? T['_']['columns'][K]['_']['isPrimaryKey'] extends true ? K : TablePolicies<T>[K] extends {
|
|
15
21
|
update: 'required';
|
|
16
22
|
} ? never : DefaultBlocked<T, K> : never : DefaultBlocked<T, K>;
|
|
17
|
-
}[keyof
|
|
23
|
+
}[keyof UpdateSource<T>] & keyof UpdateSource<T>;
|
|
18
24
|
type RequiredKeys<T extends MsSqlTable> = {
|
|
19
|
-
[K in keyof
|
|
25
|
+
[K in keyof UpdateSource<T>]-?: K extends keyof TablePolicies<T> ? TablePolicies<T>[K] extends {
|
|
20
26
|
update: 'required';
|
|
21
27
|
} ? TablePolicies<T>[K] extends {
|
|
22
28
|
timestamp: 'updated';
|
|
23
29
|
} ? never : K : never : never;
|
|
24
|
-
}[keyof
|
|
25
|
-
export type MsSqlUpdateValues<T extends MsSqlTable, B extends keyof
|
|
26
|
-
[K in Exclude<R | RequiredKeys<T>, B | Blocked<T>>]-?: Exclude<
|
|
30
|
+
}[keyof UpdateSource<T>] & keyof UpdateSource<T>;
|
|
31
|
+
export type MsSqlUpdateValues<T extends MsSqlTable, B extends keyof UpdateSource<T> = never, R extends Exclude<keyof UpdateSource<T>, B | Blocked<T>> = never> = Omit<UpdateSource<T>, B | Blocked<T> | R | RequiredKeys<T>> & {
|
|
32
|
+
[K in Exclude<R | RequiredKeys<T>, B | Blocked<T>>]-?: Exclude<UpdateSource<T>[K], undefined>;
|
|
27
33
|
};
|
|
28
34
|
export {};
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var nodeMssql=require('drizzle-orm/node-mssql'),native=require('drizzle-orm'),node_async_hooks=require('node:async_hooks'),alias=require('drizzle-orm/mssql-core/alias'),mssqlCore=require('drizzle-orm/mssql-core'),
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var nodeMssql=require('drizzle-orm/node-mssql'),native=require('drizzle-orm'),node_async_hooks=require('node:async_hooks'),alias=require('drizzle-orm/mssql-core/alias'),mssqlCore=require('drizzle-orm/mssql-core'),common=require('drizzle-orm/mssql-core/columns/common');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var native__namespace=/*#__PURE__*/_interopNamespaceDefault(native);function createAlias(schema) {
|
|
2
2
|
/********************************************************************************************************************
|
|
3
3
|
* getDefaultAlias
|
|
4
4
|
* ******************************************************************************************************************/
|
|
@@ -203,7 +203,7 @@ for (const [method, policy] of Object.entries({
|
|
|
203
203
|
createdAt: { timestamp: 'created' },
|
|
204
204
|
updatedAt: { timestamp: 'updated' },
|
|
205
205
|
})) {
|
|
206
|
-
Object.defineProperty(
|
|
206
|
+
Object.defineProperty(common.MsSqlColumnBuilder.prototype, method, {
|
|
207
207
|
configurable: true,
|
|
208
208
|
value: function () {
|
|
209
209
|
policies.set(this, Object.assign(Object.assign({}, policies.get(this)), policy));
|
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {drizzle}from'drizzle-orm/node-mssql';import*as native from'drizzle-orm';import {isTable,getTableColumns,sql,is,SQL,eq,and,count,defineRelations}from'drizzle-orm';export{asc,avg,avgDistinct,count,countDistinct,desc,exists,max,min,not,notExists,sum,sumDistinct}from'drizzle-orm';import {AsyncLocalStorage}from'node:async_hooks';import {alias}from'drizzle-orm/mssql-core/alias';import {MsSqlTable,mssqlTable as mssqlTable$1,getTableConfig,MsSqlColumn}from'drizzle-orm/mssql-core';export{bigint,binary,bit,char,check,customType,date,datetime,datetime2,datetimeoffset,decimal,float,foreignKey,index,int,mssqlSchema,mssqlTableCreator,mssqlView,nchar,ntext,numeric,nvarchar,primaryKey,real,smallint,text,time,tinyint,unique,uniqueIndex,varbinary,varchar}from'drizzle-orm/mssql-core';import {
|
|
1
|
+
import {drizzle}from'drizzle-orm/node-mssql';import*as native from'drizzle-orm';import {isTable,getTableColumns,sql,is,SQL,eq,and,count,defineRelations}from'drizzle-orm';export{asc,avg,avgDistinct,count,countDistinct,desc,exists,max,min,not,notExists,sum,sumDistinct}from'drizzle-orm';import {AsyncLocalStorage}from'node:async_hooks';import {alias}from'drizzle-orm/mssql-core/alias';import {MsSqlTable,mssqlTable as mssqlTable$1,getTableConfig,MsSqlColumn}from'drizzle-orm/mssql-core';export{bigint,binary,bit,char,check,customType,date,datetime,datetime2,datetimeoffset,decimal,float,foreignKey,index,int,mssqlSchema,mssqlTableCreator,mssqlView,nchar,ntext,numeric,nvarchar,primaryKey,real,smallint,text,time,tinyint,unique,uniqueIndex,varbinary,varchar}from'drizzle-orm/mssql-core';import {MsSqlColumnBuilder}from'drizzle-orm/mssql-core/columns/common';function createAlias(schema) {
|
|
2
2
|
/********************************************************************************************************************
|
|
3
3
|
* getDefaultAlias
|
|
4
4
|
* ******************************************************************************************************************/
|
|
@@ -203,7 +203,7 @@ for (const [method, policy] of Object.entries({
|
|
|
203
203
|
createdAt: { timestamp: 'created' },
|
|
204
204
|
updatedAt: { timestamp: 'updated' },
|
|
205
205
|
})) {
|
|
206
|
-
Object.defineProperty(
|
|
206
|
+
Object.defineProperty(MsSqlColumnBuilder.prototype, method, {
|
|
207
207
|
configurable: true,
|
|
208
208
|
value: function () {
|
|
209
209
|
policies.set(this, Object.assign(Object.assign({}, policies.get(this)), policy));
|
package/dist/mssqlTable.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ColumnBuilderBase, ColumnBuilderBaseConfig, ColumnBuilderExtraConfig, ColumnType } from 'drizzle-orm/column-builder';
|
|
2
2
|
import { type MsSqlTable, type MsSqlTableWithColumns } from 'drizzle-orm/mssql-core';
|
|
3
3
|
import type { BuildColumns, BuildExtraConfigColumns } from 'drizzle-orm/column-builder';
|
|
4
4
|
import type { MsSqlColumnBuilders } from 'drizzle-orm/mssql-core/columns/all';
|
|
@@ -18,8 +18,8 @@ declare const tablePolicyType: unique symbol;
|
|
|
18
18
|
type Mark<T, P extends ColumnPolicy> = T & {
|
|
19
19
|
readonly [policyType]: P;
|
|
20
20
|
};
|
|
21
|
-
declare module 'drizzle-orm/
|
|
22
|
-
interface
|
|
21
|
+
declare module 'drizzle-orm/mssql-core/columns/common' {
|
|
22
|
+
interface MsSqlColumnBuilder<T extends ColumnBuilderBaseConfig<ColumnType>, TRuntimeConfig extends object, TExtraConfig extends ColumnBuilderExtraConfig> {
|
|
23
23
|
insertBlocked(): Mark<this, {
|
|
24
24
|
insert: 'blocked';
|
|
25
25
|
}>;
|
package/dist/mssqlTable.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ColumnBuilderBase, ColumnBuilderBaseConfig, ColumnBuilderExtraConfig, ColumnType } from 'drizzle-orm/column-builder';
|
|
2
2
|
import { type MsSqlTable, type MsSqlTableWithColumns } from 'drizzle-orm/mssql-core';
|
|
3
3
|
import type { BuildColumns, BuildExtraConfigColumns } from 'drizzle-orm/column-builder';
|
|
4
4
|
import type { MsSqlColumnBuilders } from 'drizzle-orm/mssql-core/columns/all';
|
|
@@ -18,8 +18,8 @@ declare const tablePolicyType: unique symbol;
|
|
|
18
18
|
type Mark<T, P extends ColumnPolicy> = T & {
|
|
19
19
|
readonly [policyType]: P;
|
|
20
20
|
};
|
|
21
|
-
declare module 'drizzle-orm/
|
|
22
|
-
interface
|
|
21
|
+
declare module 'drizzle-orm/mssql-core/columns/common' {
|
|
22
|
+
interface MsSqlColumnBuilder<T extends ColumnBuilderBaseConfig<ColumnType>, TRuntimeConfig extends object, TExtraConfig extends ColumnBuilderExtraConfig> {
|
|
23
23
|
insertBlocked(): Mark<this, {
|
|
24
24
|
insert: 'blocked';
|
|
25
25
|
}>;
|
package/package.json
CHANGED