@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 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 r}from"@paralleldrive/cuid2";import{createBaseTable as u}from"orchid-orm";var n=e=>()=>e.string(36).primaryKey().default(()=>r()),o=e=>()=>e.timestampsNoTZ().createdAt.default(()=>new Date().toISOString()).parse(t=>t&&new Date(t)),s=e=>()=>e.timestampsNoTZ().updatedAt.default(()=>new Date().toISOString()).parse(t=>t&&new Date(t)),m=e=>()=>e.timestampNoTZ().parse(t=>t&&new Date(t)).nullable(),p=u({snakeCase:!0,nowSQL:"now()::timestamptz(3) AT TIME ZONE 'UTC'",columnTypes:e=>({...e,xEnum:t=>e.string().encode(a=>a).parse(a=>a),xTimestamp:()=>e.timestampNoTZ().parse(t=>t&&new Date(t)),createdAt:o(e),updatedAt:s(e),deletedAt:m(e),cuid:n(e),baseColumns:()=>({id:n(e)(),createdAt:o(e)(),updatedAt:s(e)(),deletedAt:m(e)()})})});export{p as BaseTable};
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.1.0",
3
+ "version": "0.3.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
- "exports": {
7
- "default": "./dist/index.js",
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.1"
17
+ "orchid-orm": "^1.34.5"
19
18
  },
20
19
  "peerDependencies": {
21
20
  "@paralleldrive/cuid2": "^2.2.2",
22
- "orchid-orm": "^1.34.1"
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';