@apibara/indexer 2.0.0-beta.7 → 2.0.0-beta.9

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.
@@ -99,7 +99,9 @@ class DrizzleSinkInsert {
99
99
  };
100
100
  }
101
101
  );
102
- return originalInsert.values(cursoredValues);
102
+ return originalInsert.values(
103
+ cursoredValues
104
+ );
103
105
  }
104
106
  }
105
107
 
@@ -1,7 +1,7 @@
1
1
  import { Cursor } from '@apibara/protocol';
2
- import { TablesRelationalConfig, ExtractTablesWithRelations, SQL } from 'drizzle-orm';
2
+ import { TablesRelationalConfig, ExtractTablesWithRelations, SQL, NotNull, BuildExtraConfigColumns, BuildColumns, Placeholder } from 'drizzle-orm';
3
3
  import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
4
- import { PgTable, PgQueryResultHKT, PgTransaction, PgUpdateBase, PgInsertValue, PgUpdateSetSource, PgSelectBuilder, SelectedFields, TableConfig, PgTableWithColumns, PgDatabase, AnyPgTable, PgTableFn } from 'drizzle-orm/pg-core';
4
+ import { PgTable, PgQueryResultHKT, PgTransaction, PgUpdateBase, PgCustomColumnBuilder, PgColumnBuilderBase, PgTableExtraConfig, PgTableWithColumns, PgUpdateSetSource, PgSelectBuilder, SelectedFields, TableConfig, PgDatabase, AnyPgTable } from 'drizzle-orm/pg-core';
5
5
  import { S as Sink, a as SinkCursorParams } from '../../shared/indexer.b9c8f0d8.cjs';
6
6
  import { Range } from 'postgres-range';
7
7
 
@@ -13,6 +13,72 @@ declare class DrizzleSinkDelete<TTable extends PgTable, TQueryResult extends PgQ
13
13
  where(where: SQL): Omit<PgUpdateBase<TTable, TQueryResult, undefined, false, "where">, "where">;
14
14
  }
15
15
 
16
+ type Comparable = string | number;
17
+ type RangeBound<T extends Comparable> = T | {
18
+ value: T;
19
+ inclusive: boolean;
20
+ };
21
+ declare class Int8Range {
22
+ readonly range: Range<number>;
23
+ constructor(range: Range<number>);
24
+ get start(): RangeBound<number> | null;
25
+ get end(): RangeBound<number> | null;
26
+ }
27
+ declare const int8range: {
28
+ (): drizzle_orm_pg_core.PgCustomColumnBuilder<{
29
+ name: "";
30
+ dataType: "custom";
31
+ columnType: "PgCustomColumn";
32
+ data: Int8Range;
33
+ driverParam: unknown;
34
+ enumValues: undefined;
35
+ generated: undefined;
36
+ }>;
37
+ <TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): drizzle_orm_pg_core.PgCustomColumnBuilder<{
38
+ name: "";
39
+ dataType: "custom";
40
+ columnType: "PgCustomColumn";
41
+ data: Int8Range;
42
+ driverParam: unknown;
43
+ enumValues: undefined;
44
+ generated: undefined;
45
+ }>;
46
+ <TName extends string>(dbName: TName, fieldConfig?: unknown): drizzle_orm_pg_core.PgCustomColumnBuilder<{
47
+ name: TName;
48
+ dataType: "custom";
49
+ columnType: "PgCustomColumn";
50
+ data: Int8Range;
51
+ driverParam: unknown;
52
+ enumValues: undefined;
53
+ generated: undefined;
54
+ }>;
55
+ };
56
+
57
+ type CursorColumnBuilder = NotNull<PgCustomColumnBuilder<{
58
+ name: "_cursor";
59
+ dataType: "custom";
60
+ columnType: "PgCustomColumn";
61
+ data: Int8Range;
62
+ driverParam: undefined;
63
+ enumValues: undefined;
64
+ generated: undefined;
65
+ }>>;
66
+ type PgTableWithCursorFn<TSchema extends string | undefined = undefined> = <TTableName extends string, TColumnsMap extends Record<string, PgColumnBuilderBase>>(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildExtraConfigColumns<TTableName, TColumnsMap & {
67
+ _cursor: CursorColumnBuilder;
68
+ }, "pg">) => PgTableExtraConfig) => PgTableWithColumns<{
69
+ name: TTableName;
70
+ schema: TSchema;
71
+ columns: BuildColumns<TTableName, TColumnsMap & {
72
+ _cursor: CursorColumnBuilder;
73
+ }, "pg">;
74
+ dialect: "pg";
75
+ }>;
76
+ type PgInsertValue<TTable extends PgTable> = Omit<{
77
+ [Key in keyof TTable["$inferInsert"]]: TTable["$inferInsert"][Key] | SQL | Placeholder;
78
+ } & {}, "_cursor">;
79
+ declare const pgTable: PgTableWithCursorFn;
80
+ declare const getDrizzleCursor: (cursor_range: [bigint | undefined, bigint | undefined] | bigint | undefined) => Int8Range;
81
+
16
82
  declare class DrizzleSinkInsert<TTable extends PgTable, TQueryResult extends PgQueryResultHKT, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = ExtractTablesWithRelations<TFullSchema>> {
17
83
  private db;
18
84
  private table;
@@ -84,28 +150,4 @@ declare class DrizzleSink<TQueryResult extends PgQueryResultHKT, TFullSchema ext
84
150
  }
85
151
  declare const drizzle: <TQueryResult extends PgQueryResultHKT, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = ExtractTablesWithRelations<TFullSchema>>(args: DrizzleSinkOptions<TQueryResult, TFullSchema, TSchema>) => DrizzleSink<TQueryResult, TFullSchema, TSchema>;
86
152
 
87
- type Comparable = string | number;
88
- type RangeBound<T extends Comparable> = T | {
89
- value: T;
90
- inclusive: boolean;
91
- };
92
- declare class Int8Range {
93
- readonly range: Range<number>;
94
- constructor(range: Range<number>);
95
- get start(): RangeBound<number> | null;
96
- get end(): RangeBound<number> | null;
97
- }
98
- declare const int8range: <TName extends string>(dbName: TName, fieldConfig?: unknown) => drizzle_orm_pg_core.PgCustomColumnBuilder<{
99
- name: TName;
100
- dataType: "custom";
101
- columnType: "PgCustomColumn";
102
- data: Int8Range;
103
- driverParam: unknown;
104
- enumValues: undefined;
105
- generated: undefined;
106
- }>;
107
-
108
- declare const pgTable: PgTableFn;
109
- declare const getDrizzleCursor: (cursor_range: [bigint | undefined, bigint | undefined] | bigint | undefined) => Int8Range;
110
-
111
- export { DrizzleSink, DrizzleSinkDelete, type DrizzleSinkOptions, type DrizzleSinkTables, DrizzleSinkTransaction, DrizzleSinkUpdate, Int8Range, drizzle, getDrizzleCursor, int8range, pgTable };
153
+ export { type CursorColumnBuilder, DrizzleSink, DrizzleSinkDelete, type DrizzleSinkOptions, type DrizzleSinkTables, DrizzleSinkTransaction, DrizzleSinkUpdate, Int8Range, type PgInsertValue, type PgTableWithCursorFn, drizzle, getDrizzleCursor, int8range, pgTable };
@@ -1,7 +1,7 @@
1
1
  import { Cursor } from '@apibara/protocol';
2
- import { TablesRelationalConfig, ExtractTablesWithRelations, SQL } from 'drizzle-orm';
2
+ import { TablesRelationalConfig, ExtractTablesWithRelations, SQL, NotNull, BuildExtraConfigColumns, BuildColumns, Placeholder } from 'drizzle-orm';
3
3
  import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
4
- import { PgTable, PgQueryResultHKT, PgTransaction, PgUpdateBase, PgInsertValue, PgUpdateSetSource, PgSelectBuilder, SelectedFields, TableConfig, PgTableWithColumns, PgDatabase, AnyPgTable, PgTableFn } from 'drizzle-orm/pg-core';
4
+ import { PgTable, PgQueryResultHKT, PgTransaction, PgUpdateBase, PgCustomColumnBuilder, PgColumnBuilderBase, PgTableExtraConfig, PgTableWithColumns, PgUpdateSetSource, PgSelectBuilder, SelectedFields, TableConfig, PgDatabase, AnyPgTable } from 'drizzle-orm/pg-core';
5
5
  import { S as Sink, a as SinkCursorParams } from '../../shared/indexer.b9c8f0d8.mjs';
6
6
  import { Range } from 'postgres-range';
7
7
 
@@ -13,6 +13,72 @@ declare class DrizzleSinkDelete<TTable extends PgTable, TQueryResult extends PgQ
13
13
  where(where: SQL): Omit<PgUpdateBase<TTable, TQueryResult, undefined, false, "where">, "where">;
14
14
  }
15
15
 
16
+ type Comparable = string | number;
17
+ type RangeBound<T extends Comparable> = T | {
18
+ value: T;
19
+ inclusive: boolean;
20
+ };
21
+ declare class Int8Range {
22
+ readonly range: Range<number>;
23
+ constructor(range: Range<number>);
24
+ get start(): RangeBound<number> | null;
25
+ get end(): RangeBound<number> | null;
26
+ }
27
+ declare const int8range: {
28
+ (): drizzle_orm_pg_core.PgCustomColumnBuilder<{
29
+ name: "";
30
+ dataType: "custom";
31
+ columnType: "PgCustomColumn";
32
+ data: Int8Range;
33
+ driverParam: unknown;
34
+ enumValues: undefined;
35
+ generated: undefined;
36
+ }>;
37
+ <TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): drizzle_orm_pg_core.PgCustomColumnBuilder<{
38
+ name: "";
39
+ dataType: "custom";
40
+ columnType: "PgCustomColumn";
41
+ data: Int8Range;
42
+ driverParam: unknown;
43
+ enumValues: undefined;
44
+ generated: undefined;
45
+ }>;
46
+ <TName extends string>(dbName: TName, fieldConfig?: unknown): drizzle_orm_pg_core.PgCustomColumnBuilder<{
47
+ name: TName;
48
+ dataType: "custom";
49
+ columnType: "PgCustomColumn";
50
+ data: Int8Range;
51
+ driverParam: unknown;
52
+ enumValues: undefined;
53
+ generated: undefined;
54
+ }>;
55
+ };
56
+
57
+ type CursorColumnBuilder = NotNull<PgCustomColumnBuilder<{
58
+ name: "_cursor";
59
+ dataType: "custom";
60
+ columnType: "PgCustomColumn";
61
+ data: Int8Range;
62
+ driverParam: undefined;
63
+ enumValues: undefined;
64
+ generated: undefined;
65
+ }>>;
66
+ type PgTableWithCursorFn<TSchema extends string | undefined = undefined> = <TTableName extends string, TColumnsMap extends Record<string, PgColumnBuilderBase>>(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildExtraConfigColumns<TTableName, TColumnsMap & {
67
+ _cursor: CursorColumnBuilder;
68
+ }, "pg">) => PgTableExtraConfig) => PgTableWithColumns<{
69
+ name: TTableName;
70
+ schema: TSchema;
71
+ columns: BuildColumns<TTableName, TColumnsMap & {
72
+ _cursor: CursorColumnBuilder;
73
+ }, "pg">;
74
+ dialect: "pg";
75
+ }>;
76
+ type PgInsertValue<TTable extends PgTable> = Omit<{
77
+ [Key in keyof TTable["$inferInsert"]]: TTable["$inferInsert"][Key] | SQL | Placeholder;
78
+ } & {}, "_cursor">;
79
+ declare const pgTable: PgTableWithCursorFn;
80
+ declare const getDrizzleCursor: (cursor_range: [bigint | undefined, bigint | undefined] | bigint | undefined) => Int8Range;
81
+
16
82
  declare class DrizzleSinkInsert<TTable extends PgTable, TQueryResult extends PgQueryResultHKT, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = ExtractTablesWithRelations<TFullSchema>> {
17
83
  private db;
18
84
  private table;
@@ -84,28 +150,4 @@ declare class DrizzleSink<TQueryResult extends PgQueryResultHKT, TFullSchema ext
84
150
  }
85
151
  declare const drizzle: <TQueryResult extends PgQueryResultHKT, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = ExtractTablesWithRelations<TFullSchema>>(args: DrizzleSinkOptions<TQueryResult, TFullSchema, TSchema>) => DrizzleSink<TQueryResult, TFullSchema, TSchema>;
86
152
 
87
- type Comparable = string | number;
88
- type RangeBound<T extends Comparable> = T | {
89
- value: T;
90
- inclusive: boolean;
91
- };
92
- declare class Int8Range {
93
- readonly range: Range<number>;
94
- constructor(range: Range<number>);
95
- get start(): RangeBound<number> | null;
96
- get end(): RangeBound<number> | null;
97
- }
98
- declare const int8range: <TName extends string>(dbName: TName, fieldConfig?: unknown) => drizzle_orm_pg_core.PgCustomColumnBuilder<{
99
- name: TName;
100
- dataType: "custom";
101
- columnType: "PgCustomColumn";
102
- data: Int8Range;
103
- driverParam: unknown;
104
- enumValues: undefined;
105
- generated: undefined;
106
- }>;
107
-
108
- declare const pgTable: PgTableFn;
109
- declare const getDrizzleCursor: (cursor_range: [bigint | undefined, bigint | undefined] | bigint | undefined) => Int8Range;
110
-
111
- export { DrizzleSink, DrizzleSinkDelete, type DrizzleSinkOptions, type DrizzleSinkTables, DrizzleSinkTransaction, DrizzleSinkUpdate, Int8Range, drizzle, getDrizzleCursor, int8range, pgTable };
153
+ export { type CursorColumnBuilder, DrizzleSink, DrizzleSinkDelete, type DrizzleSinkOptions, type DrizzleSinkTables, DrizzleSinkTransaction, DrizzleSinkUpdate, Int8Range, type PgInsertValue, type PgTableWithCursorFn, drizzle, getDrizzleCursor, int8range, pgTable };
@@ -1,7 +1,7 @@
1
1
  import { Cursor } from '@apibara/protocol';
2
- import { TablesRelationalConfig, ExtractTablesWithRelations, SQL } from 'drizzle-orm';
2
+ import { TablesRelationalConfig, ExtractTablesWithRelations, SQL, NotNull, BuildExtraConfigColumns, BuildColumns, Placeholder } from 'drizzle-orm';
3
3
  import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
4
- import { PgTable, PgQueryResultHKT, PgTransaction, PgUpdateBase, PgInsertValue, PgUpdateSetSource, PgSelectBuilder, SelectedFields, TableConfig, PgTableWithColumns, PgDatabase, AnyPgTable, PgTableFn } from 'drizzle-orm/pg-core';
4
+ import { PgTable, PgQueryResultHKT, PgTransaction, PgUpdateBase, PgCustomColumnBuilder, PgColumnBuilderBase, PgTableExtraConfig, PgTableWithColumns, PgUpdateSetSource, PgSelectBuilder, SelectedFields, TableConfig, PgDatabase, AnyPgTable } from 'drizzle-orm/pg-core';
5
5
  import { S as Sink, a as SinkCursorParams } from '../../shared/indexer.b9c8f0d8.js';
6
6
  import { Range } from 'postgres-range';
7
7
 
@@ -13,6 +13,72 @@ declare class DrizzleSinkDelete<TTable extends PgTable, TQueryResult extends PgQ
13
13
  where(where: SQL): Omit<PgUpdateBase<TTable, TQueryResult, undefined, false, "where">, "where">;
14
14
  }
15
15
 
16
+ type Comparable = string | number;
17
+ type RangeBound<T extends Comparable> = T | {
18
+ value: T;
19
+ inclusive: boolean;
20
+ };
21
+ declare class Int8Range {
22
+ readonly range: Range<number>;
23
+ constructor(range: Range<number>);
24
+ get start(): RangeBound<number> | null;
25
+ get end(): RangeBound<number> | null;
26
+ }
27
+ declare const int8range: {
28
+ (): drizzle_orm_pg_core.PgCustomColumnBuilder<{
29
+ name: "";
30
+ dataType: "custom";
31
+ columnType: "PgCustomColumn";
32
+ data: Int8Range;
33
+ driverParam: unknown;
34
+ enumValues: undefined;
35
+ generated: undefined;
36
+ }>;
37
+ <TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): drizzle_orm_pg_core.PgCustomColumnBuilder<{
38
+ name: "";
39
+ dataType: "custom";
40
+ columnType: "PgCustomColumn";
41
+ data: Int8Range;
42
+ driverParam: unknown;
43
+ enumValues: undefined;
44
+ generated: undefined;
45
+ }>;
46
+ <TName extends string>(dbName: TName, fieldConfig?: unknown): drizzle_orm_pg_core.PgCustomColumnBuilder<{
47
+ name: TName;
48
+ dataType: "custom";
49
+ columnType: "PgCustomColumn";
50
+ data: Int8Range;
51
+ driverParam: unknown;
52
+ enumValues: undefined;
53
+ generated: undefined;
54
+ }>;
55
+ };
56
+
57
+ type CursorColumnBuilder = NotNull<PgCustomColumnBuilder<{
58
+ name: "_cursor";
59
+ dataType: "custom";
60
+ columnType: "PgCustomColumn";
61
+ data: Int8Range;
62
+ driverParam: undefined;
63
+ enumValues: undefined;
64
+ generated: undefined;
65
+ }>>;
66
+ type PgTableWithCursorFn<TSchema extends string | undefined = undefined> = <TTableName extends string, TColumnsMap extends Record<string, PgColumnBuilderBase>>(name: TTableName, columns: TColumnsMap, extraConfig?: (self: BuildExtraConfigColumns<TTableName, TColumnsMap & {
67
+ _cursor: CursorColumnBuilder;
68
+ }, "pg">) => PgTableExtraConfig) => PgTableWithColumns<{
69
+ name: TTableName;
70
+ schema: TSchema;
71
+ columns: BuildColumns<TTableName, TColumnsMap & {
72
+ _cursor: CursorColumnBuilder;
73
+ }, "pg">;
74
+ dialect: "pg";
75
+ }>;
76
+ type PgInsertValue<TTable extends PgTable> = Omit<{
77
+ [Key in keyof TTable["$inferInsert"]]: TTable["$inferInsert"][Key] | SQL | Placeholder;
78
+ } & {}, "_cursor">;
79
+ declare const pgTable: PgTableWithCursorFn;
80
+ declare const getDrizzleCursor: (cursor_range: [bigint | undefined, bigint | undefined] | bigint | undefined) => Int8Range;
81
+
16
82
  declare class DrizzleSinkInsert<TTable extends PgTable, TQueryResult extends PgQueryResultHKT, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = ExtractTablesWithRelations<TFullSchema>> {
17
83
  private db;
18
84
  private table;
@@ -84,28 +150,4 @@ declare class DrizzleSink<TQueryResult extends PgQueryResultHKT, TFullSchema ext
84
150
  }
85
151
  declare const drizzle: <TQueryResult extends PgQueryResultHKT, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = ExtractTablesWithRelations<TFullSchema>>(args: DrizzleSinkOptions<TQueryResult, TFullSchema, TSchema>) => DrizzleSink<TQueryResult, TFullSchema, TSchema>;
86
152
 
87
- type Comparable = string | number;
88
- type RangeBound<T extends Comparable> = T | {
89
- value: T;
90
- inclusive: boolean;
91
- };
92
- declare class Int8Range {
93
- readonly range: Range<number>;
94
- constructor(range: Range<number>);
95
- get start(): RangeBound<number> | null;
96
- get end(): RangeBound<number> | null;
97
- }
98
- declare const int8range: <TName extends string>(dbName: TName, fieldConfig?: unknown) => drizzle_orm_pg_core.PgCustomColumnBuilder<{
99
- name: TName;
100
- dataType: "custom";
101
- columnType: "PgCustomColumn";
102
- data: Int8Range;
103
- driverParam: unknown;
104
- enumValues: undefined;
105
- generated: undefined;
106
- }>;
107
-
108
- declare const pgTable: PgTableFn;
109
- declare const getDrizzleCursor: (cursor_range: [bigint | undefined, bigint | undefined] | bigint | undefined) => Int8Range;
110
-
111
- export { DrizzleSink, DrizzleSinkDelete, type DrizzleSinkOptions, type DrizzleSinkTables, DrizzleSinkTransaction, DrizzleSinkUpdate, Int8Range, drizzle, getDrizzleCursor, int8range, pgTable };
153
+ export { type CursorColumnBuilder, DrizzleSink, DrizzleSinkDelete, type DrizzleSinkOptions, type DrizzleSinkTables, DrizzleSinkTransaction, DrizzleSinkUpdate, Int8Range, type PgInsertValue, type PgTableWithCursorFn, drizzle, getDrizzleCursor, int8range, pgTable };
@@ -93,7 +93,9 @@ class DrizzleSinkInsert {
93
93
  };
94
94
  }
95
95
  );
96
- return originalInsert.values(cursoredValues);
96
+ return originalInsert.values(
97
+ cursoredValues
98
+ );
97
99
  }
98
100
  }
99
101
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apibara/indexer",
3
- "version": "2.0.0-beta.7",
3
+ "version": "2.0.0-beta.9",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",
@@ -80,14 +80,14 @@
80
80
  "@types/pg": "^8.11.10",
81
81
  "better-sqlite3": "^11.1.2",
82
82
  "csv-stringify": "^6.5.0",
83
- "drizzle-orm": "^0.33.0",
83
+ "drizzle-orm": "^0.35.2",
84
84
  "pg": "^8.12.0",
85
85
  "postgres-range": "^1.1.4",
86
86
  "unbuild": "^2.0.0",
87
87
  "vitest": "^1.6.0"
88
88
  },
89
89
  "dependencies": {
90
- "@apibara/protocol": "2.0.0-beta.7",
90
+ "@apibara/protocol": "2.0.0-beta.9",
91
91
  "@opentelemetry/api": "^1.9.0",
92
92
  "consola": "^3.2.3",
93
93
  "hookable": "^5.5.3",
@@ -98,7 +98,7 @@
98
98
  "peerDependencies": {
99
99
  "better-sqlite3": "^11.1.2",
100
100
  "csv-stringify": "^6.5.0",
101
- "drizzle-orm": "^0.33.0",
101
+ "drizzle-orm": "^0.35.2",
102
102
  "postgres-range": "^1.1.4",
103
103
  "vitest": "^1.6.0"
104
104
  }
@@ -4,12 +4,12 @@ import type {
4
4
  TablesRelationalConfig,
5
5
  } from "drizzle-orm";
6
6
  import type {
7
- PgInsertValue,
7
+ PgInsertValue as DrizzleInsertValue,
8
8
  PgQueryResultHKT,
9
9
  PgTable,
10
10
  PgTransaction,
11
11
  } from "drizzle-orm/pg-core";
12
- import { getDrizzleCursor } from "./utils";
12
+ import { type PgInsertValue, getDrizzleCursor } from "./utils";
13
13
 
14
14
  export class DrizzleSinkInsert<
15
15
  TTable extends PgTable,
@@ -34,6 +34,9 @@ export class DrizzleSinkInsert<
34
34
  };
35
35
  },
36
36
  );
37
- return originalInsert.values(cursoredValues as PgInsertValue<TTable>[]);
37
+
38
+ return originalInsert.values(
39
+ cursoredValues as DrizzleInsertValue<TTable>[],
40
+ );
38
41
  }
39
42
  }
@@ -1,9 +1,72 @@
1
- import type { PgTableFn } from "drizzle-orm/pg-core";
1
+ import type {
2
+ BuildColumns,
3
+ BuildExtraConfigColumns,
4
+ NotNull,
5
+ Placeholder,
6
+ SQL,
7
+ } from "drizzle-orm";
8
+ import type {
9
+ PgColumnBuilderBase,
10
+ PgCustomColumnBuilder,
11
+ PgTable,
12
+ PgTableExtraConfig,
13
+ PgTableWithColumns,
14
+ } from "drizzle-orm/pg-core";
2
15
  import { pgTable as drizzlePgTable } from "drizzle-orm/pg-core";
3
16
  import range from "postgres-range";
4
17
  import { Int8Range, int8range } from "./Int8Range";
5
18
 
6
- export const pgTable: PgTableFn = (name, columns, extraConfig?) => {
19
+ export type CursorColumnBuilder = NotNull<
20
+ PgCustomColumnBuilder<{
21
+ name: "_cursor";
22
+ dataType: "custom";
23
+ columnType: "PgCustomColumn";
24
+ data: Int8Range;
25
+ driverParam: undefined;
26
+ enumValues: undefined;
27
+ generated: undefined;
28
+ }>
29
+ >;
30
+
31
+ // Redefining the type of `pgTable` to include the `_cursor` column.
32
+ export type PgTableWithCursorFn<
33
+ TSchema extends string | undefined = undefined,
34
+ > = <
35
+ TTableName extends string,
36
+ TColumnsMap extends Record<string, PgColumnBuilderBase>,
37
+ >(
38
+ name: TTableName,
39
+ columns: TColumnsMap,
40
+ extraConfig?: (
41
+ self: BuildExtraConfigColumns<
42
+ TTableName,
43
+ TColumnsMap & { _cursor: CursorColumnBuilder },
44
+ "pg"
45
+ >,
46
+ ) => PgTableExtraConfig,
47
+ ) => PgTableWithColumns<{
48
+ name: TTableName;
49
+ schema: TSchema;
50
+ columns: BuildColumns<
51
+ TTableName,
52
+ TColumnsMap & { _cursor: CursorColumnBuilder },
53
+ "pg"
54
+ >;
55
+ dialect: "pg";
56
+ }>;
57
+
58
+ // Same as the drizzle's `PgInsertValue` type, but without the `_cursor` column.
59
+ export type PgInsertValue<TTable extends PgTable> = Omit<
60
+ {
61
+ [Key in keyof TTable["$inferInsert"]]:
62
+ | TTable["$inferInsert"][Key]
63
+ | SQL
64
+ | Placeholder;
65
+ } & {},
66
+ "_cursor"
67
+ >;
68
+
69
+ export const pgTable: PgTableWithCursorFn = (name, columns, extraConfig?) => {
7
70
  return drizzlePgTable(
8
71
  name,
9
72
  {