@bingtsingw/orchid-helper 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/package.json +6 -7
- package/src/base-table.ts +61 -0
- package/src/index.ts +1 -0
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { DefaultSchemaConfig } from 'orchid-orm';
|
|
|
4
4
|
|
|
5
5
|
declare const BaseTable: orchid_orm.BaseTableClass<DefaultSchemaConfig, {
|
|
6
6
|
xEnum: <T extends Record<any, any>>(_: T) => orchid_core.ParseColumn<orchid_core.EncodeColumn<orchid_orm.StringColumn<DefaultSchemaConfig>, unknown, T[keyof T]>, unknown, T[keyof T]>;
|
|
7
|
+
xJsonText: () => orchid_core.EncodeColumn<orchid_orm.JSONTextColumn<DefaultSchemaConfig>, unknown, any[] | Record<string, any>>;
|
|
7
8
|
xTimestamp: () => orchid_core.ParseColumn<orchid_orm.TimestampColumn<DefaultSchemaConfig>, unknown, Date>;
|
|
8
9
|
createdAt: () => orchid_core.ParseColumn<orchid_core.ColumnWithDefault<orchid_core.ColumnWithDefault<orchid_orm.TimestampColumn<DefaultSchemaConfig>, orchid_core.RawSQLBase<orchid_core.QueryColumn<unknown, any>, unknown>>, () => string>, unknown, Date>;
|
|
9
10
|
updatedAt: () => orchid_core.ParseColumn<orchid_core.ColumnWithDefault<orchid_core.ColumnWithDefault<orchid_orm.TimestampColumn<DefaultSchemaConfig>, orchid_core.RawSQLBase<orchid_core.QueryColumn<unknown, any>, unknown>>, () => string>, unknown, Date>;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createId as
|
|
1
|
+
import{createId as m}from"@paralleldrive/cuid2";import{createBaseTable as u}from"orchid-orm";var o=e=>()=>e.string(36).primaryKey().default(()=>m()),n=e=>()=>e.timestampsNoTZ().createdAt.default(()=>new Date().toISOString()).asDate(),s=e=>()=>e.timestampsNoTZ().updatedAt.default(()=>new Date().toISOString()).asDate(),r=e=>()=>e.timestampNoTZ().asDate().nullable(),f=u({snakeCase:!0,nowSQL:"now()::timestamptz(3) AT TIME ZONE 'UTC'",columnTypes:e=>({...e,xEnum:t=>e.string().encode(a=>a).parse(a=>a),xJsonText:()=>e.jsonText().encode(t=>{if(typeof t!="object")throw new Error("Invalid value for JSON column");return JSON.stringify(t)}),xTimestamp:()=>e.timestampNoTZ().asDate(),createdAt:n(e),updatedAt:s(e),deletedAt:r(e),cuid:o(e),baseColumns:()=>({id:o(e)(),createdAt:n(e)(),updatedAt:s(e)(),deletedAt:r(e)()})})});export{f as BaseTable};
|
package/package.json
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bingtsingw/orchid-helper",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
"types": "./dist/index.d.ts"
|
|
9
|
-
},
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./src/index.ts",
|
|
10
8
|
"files": [
|
|
9
|
+
"src",
|
|
11
10
|
"dist"
|
|
12
11
|
],
|
|
13
12
|
"eslintConfig": {
|
|
@@ -15,11 +14,11 @@
|
|
|
15
14
|
},
|
|
16
15
|
"devDependencies": {
|
|
17
16
|
"@paralleldrive/cuid2": "^2.2.2",
|
|
18
|
-
"orchid-orm": "^1.34.
|
|
17
|
+
"orchid-orm": "^1.34.5"
|
|
19
18
|
},
|
|
20
19
|
"peerDependencies": {
|
|
21
20
|
"@paralleldrive/cuid2": "^2.2.2",
|
|
22
|
-
"orchid-orm": "^1.34.
|
|
21
|
+
"orchid-orm": "^1.34.5"
|
|
23
22
|
},
|
|
24
23
|
"publishConfig": {
|
|
25
24
|
"access": "public",
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createId } from '@paralleldrive/cuid2';
|
|
2
|
+
import type { DefaultColumnTypes, DefaultSchemaConfig } from 'orchid-orm';
|
|
3
|
+
import { createBaseTable } from 'orchid-orm';
|
|
4
|
+
|
|
5
|
+
const cuid = (t: DefaultColumnTypes<DefaultSchemaConfig>) => () =>
|
|
6
|
+
t
|
|
7
|
+
.string(36)
|
|
8
|
+
.primaryKey()
|
|
9
|
+
.default(() => createId());
|
|
10
|
+
|
|
11
|
+
const createdAt = (t: DefaultColumnTypes<DefaultSchemaConfig>) => () =>
|
|
12
|
+
t
|
|
13
|
+
.timestampsNoTZ()
|
|
14
|
+
.createdAt.default(() => new Date().toISOString())
|
|
15
|
+
.asDate();
|
|
16
|
+
|
|
17
|
+
const updatedAt = (t: DefaultColumnTypes<DefaultSchemaConfig>) => () =>
|
|
18
|
+
t
|
|
19
|
+
.timestampsNoTZ()
|
|
20
|
+
.updatedAt.default(() => new Date().toISOString())
|
|
21
|
+
.asDate();
|
|
22
|
+
|
|
23
|
+
const deletedAt = (t: DefaultColumnTypes<DefaultSchemaConfig>) => () => t.timestampNoTZ().asDate().nullable();
|
|
24
|
+
|
|
25
|
+
export const BaseTable = createBaseTable({
|
|
26
|
+
snakeCase: true,
|
|
27
|
+
nowSQL: `now()::timestamptz(3) AT TIME ZONE 'UTC'`,
|
|
28
|
+
|
|
29
|
+
columnTypes: (t) => ({
|
|
30
|
+
...t,
|
|
31
|
+
|
|
32
|
+
// Extend built-in methods
|
|
33
|
+
xEnum: <T extends Record<any, any>>(_: T) =>
|
|
34
|
+
t
|
|
35
|
+
.string()
|
|
36
|
+
.encode((v: T[keyof T]) => v)
|
|
37
|
+
.parse((v) => v as unknown as T[keyof T]),
|
|
38
|
+
xJsonText: () =>
|
|
39
|
+
t.jsonText().encode((v: Record<string, any> | any[]) => {
|
|
40
|
+
if (typeof v !== 'object') throw new Error('Invalid value for JSON column');
|
|
41
|
+
|
|
42
|
+
return JSON.stringify(v);
|
|
43
|
+
}),
|
|
44
|
+
xTimestamp: () => t.timestampNoTZ().asDate(),
|
|
45
|
+
|
|
46
|
+
// Add new methods
|
|
47
|
+
createdAt: createdAt(t),
|
|
48
|
+
updatedAt: updatedAt(t),
|
|
49
|
+
deletedAt: deletedAt(t),
|
|
50
|
+
cuid: cuid(t),
|
|
51
|
+
|
|
52
|
+
baseColumns: () => {
|
|
53
|
+
return {
|
|
54
|
+
id: cuid(t)(),
|
|
55
|
+
createdAt: createdAt(t)(),
|
|
56
|
+
updatedAt: updatedAt(t)(),
|
|
57
|
+
deletedAt: deletedAt(t)(),
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
}),
|
|
61
|
+
});
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './base-table';
|