@prisma-next/sql-contract-ts 0.3.0-dev.5 → 0.3.0-dev.50
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 +78 -12
- package/dist/config-types.d.mts +8 -0
- package/dist/config-types.d.mts.map +1 -0
- package/dist/config-types.mjs +14 -0
- package/dist/config-types.mjs.map +1 -0
- package/dist/contract-builder.d.mts +110 -0
- package/dist/contract-builder.d.mts.map +1 -0
- package/dist/contract-builder.mjs +385 -0
- package/dist/contract-builder.mjs.map +1 -0
- package/package.json +32 -19
- package/schemas/data-contract-sql-v1.json +168 -8
- package/src/config-types.ts +11 -0
- package/src/contract-builder.ts +372 -42
- package/src/contract.ts +107 -96
- package/src/exports/config-types.ts +2 -0
- package/dist/chunk-SEOX3AAQ.js +0 -309
- package/dist/chunk-SEOX3AAQ.js.map +0 -1
- package/dist/contract-builder.d.ts +0 -87
- package/dist/contract-builder.d.ts.map +0 -1
- package/dist/contract.d.ts +0 -50
- package/dist/contract.d.ts.map +0 -1
- package/dist/exports/contract-builder.d.ts +0 -3
- package/dist/exports/contract-builder.d.ts.map +0 -1
- package/dist/exports/contract-builder.js +0 -216
- package/dist/exports/contract-builder.js.map +0 -1
- package/dist/exports/contract.d.ts +0 -2
- package/dist/exports/contract.d.ts.map +0 -1
- package/dist/exports/contract.js +0 -9
- package/dist/exports/contract.js.map +0 -1
- package/src/exports/contract.ts +0 -1
package/README.md
CHANGED
|
@@ -10,21 +10,21 @@ This package contains the SQL-specific TypeScript contract authoring surface for
|
|
|
10
10
|
- **Layer**: authoring
|
|
11
11
|
- **Plane**: migration
|
|
12
12
|
|
|
13
|
-
**Note**: SQL authoring may depend on SQL
|
|
13
|
+
**Note**: SQL authoring may depend on SQL core layer (e.g., `@prisma-next/sql-contract/types`) within the same domain.
|
|
14
14
|
|
|
15
15
|
## Overview
|
|
16
16
|
|
|
17
17
|
This package is part of the SQL family namespace (`packages/2-sql/2-authoring/contract-ts`) and provides:
|
|
18
18
|
- SQL contract builder (`defineContract`) - TypeScript builder for creating SQL contracts programmatically
|
|
19
|
-
- SQL contract validation (`validateContract`) - Structural and logical validation for SQL contracts
|
|
20
19
|
- SQL contract JSON schema - JSON schema for validating contract structure
|
|
21
20
|
|
|
22
21
|
## Responsibilities
|
|
23
22
|
|
|
24
23
|
- **SQL Contract Builder**: Provides the `defineContract()` builder API for creating SQL contracts programmatically with type safety, including pack-ref based `.target()` and `.extensionPacks()` helpers
|
|
25
|
-
- **
|
|
24
|
+
- **Storage Type Authoring**: Supports `storage.types` declarations and `typeRef` columns via the SQL builder
|
|
26
25
|
- **SQL Contract JSON Schema**: Provides JSON schema for validating contract structure in IDEs and tooling
|
|
27
26
|
- **Composition Layer**: Composes the target-agnostic builder core from `@prisma-next/contract-authoring` with SQL-specific types and validation logic
|
|
27
|
+
- **Generated Defaults**: Supports client-generated defaults via `ColumnDefault.kind = 'generated'` in contract authoring
|
|
28
28
|
|
|
29
29
|
## Package Status
|
|
30
30
|
|
|
@@ -34,9 +34,16 @@ This package was created in Phase 1 and refactored in Phase 2. It now composes t
|
|
|
34
34
|
|
|
35
35
|
- **Composes generic core**: Uses `@prisma-next/contract-authoring` for generic builder state management (`TableBuilder`, `ModelBuilder`, `ContractBuilder` base class)
|
|
36
36
|
- **SQL-specific types**: Provides SQL-specific contract types (`SqlContract`, `SqlStorage`, `SqlMappings`) from `@prisma-next/sql-contract/types`
|
|
37
|
-
- **SQL-specific validation**: Implements SQL-specific contract validation (`validateContractStructure`, `validateContractLogic`, `validateContract`) and normalization (`normalizeContract`)
|
|
38
37
|
- **SQL-specific build()**: Implements SQL-specific `build()` method in `SqlContractBuilder` that constructs `SqlContract` instances with SQL-specific structure (uniques, indexes, foreignKeys arrays)
|
|
39
38
|
|
|
39
|
+
```mermaid
|
|
40
|
+
flowchart LR
|
|
41
|
+
builderInput[TS builder calls] --> sqlContractTs[@prisma-next/sql-contract-ts]
|
|
42
|
+
sqlContractTs --> authoringCore[@prisma-next/contract-authoring]
|
|
43
|
+
sqlContractTs --> sqlTypes[@prisma-next/sql-contract/types]
|
|
44
|
+
sqlContractTs --> contractIR[SQL ContractIR]
|
|
45
|
+
```
|
|
46
|
+
|
|
40
47
|
This package is part of the package layering architecture:
|
|
41
48
|
- **Location**: `packages/2-sql/2-authoring/contract-ts` (SQL family namespace)
|
|
42
49
|
- **Ring**: SQL family namespace (can import from core, authoring, targets, and other SQL family packages)
|
|
@@ -44,7 +51,7 @@ This package is part of the package layering architecture:
|
|
|
44
51
|
## Exports
|
|
45
52
|
|
|
46
53
|
- `./contract-builder` - Contract builder API (`defineContract`, `ColumnBuilder`)
|
|
47
|
-
- `./
|
|
54
|
+
- `./config-types` - TypeScript contract config helper (`typescriptContract`)
|
|
48
55
|
- `./schema-sql` - SQL contract JSON schema (`data-contract-sql-v1.json`)
|
|
49
56
|
|
|
50
57
|
## Usage
|
|
@@ -56,39 +63,96 @@ import { defineContract } from '@prisma-next/sql-contract-ts/contract-builder';
|
|
|
56
63
|
import type { CodecTypes } from '@prisma-next/adapter-postgres/codec-types';
|
|
57
64
|
import postgresPack from '@prisma-next/target-postgres/pack';
|
|
58
65
|
import pgvector from '@prisma-next/extension-pgvector/pack';
|
|
59
|
-
import { int4Column, textColumn } from '@prisma-next/adapter-postgres/column-types';
|
|
66
|
+
import { enumColumn, enumType, int4Column, textColumn } from '@prisma-next/adapter-postgres/column-types';
|
|
60
67
|
|
|
61
68
|
const contract = defineContract<CodecTypes>()
|
|
62
69
|
.target(postgresPack)
|
|
63
70
|
.extensionPacks({ pgvector })
|
|
71
|
+
.storageType('Role', enumType('role', ['USER', 'ADMIN']))
|
|
64
72
|
.table('user', (t) =>
|
|
65
73
|
t
|
|
66
74
|
.column('id', { type: int4Column, nullable: false })
|
|
67
75
|
.column('email', { type: textColumn, nullable: false })
|
|
68
|
-
.
|
|
76
|
+
.column('role', { type: enumColumn('Role', 'role') })
|
|
77
|
+
.primaryKey(['id'], 'user_pkey') // Named primary key
|
|
78
|
+
.unique(['email'], 'user_email_unique') // Named unique constraint
|
|
79
|
+
.index(['email'], 'user_email_idx'), // Named index
|
|
80
|
+
)
|
|
81
|
+
.table('post', (t) =>
|
|
82
|
+
t
|
|
83
|
+
.column('id', { type: int4Column, nullable: false })
|
|
84
|
+
.column('userId', { type: int4Column, nullable: false })
|
|
85
|
+
.column('title', { type: textColumn, nullable: false })
|
|
86
|
+
.primaryKey(['id'])
|
|
87
|
+
.foreignKey(['userId'], { table: 'user', columns: ['id'] }, 'post_userId_fkey'), // Named FK
|
|
69
88
|
)
|
|
70
89
|
.model('User', 'user', (m) => m.field('id', 'id').field('email', 'email'))
|
|
90
|
+
.model('Post', 'post', (m) => m.field('id', 'id').field('userId', 'userId').field('title', 'title'))
|
|
91
|
+
.foreignKeys({ constraints: true, indexes: false }) // Optional FK config
|
|
71
92
|
.build();
|
|
72
93
|
```
|
|
73
94
|
|
|
95
|
+
#### Table Builder Methods
|
|
96
|
+
|
|
97
|
+
The table builder supports the following constraint methods:
|
|
98
|
+
|
|
99
|
+
| Method | Description |
|
|
100
|
+
|--------|-------------|
|
|
101
|
+
| `.primaryKey(columns, name?)` | Define primary key with optional name |
|
|
102
|
+
| `.unique(columns, name?)` | Add unique constraint with optional name |
|
|
103
|
+
| `.index(columns, name?)` | Add index with optional name |
|
|
104
|
+
| `.foreignKey(columns, references, name?)` | Add foreign key with optional name |
|
|
105
|
+
|
|
106
|
+
#### Contract-Level Foreign Key Configuration
|
|
107
|
+
|
|
108
|
+
The builder supports a `.foreignKeys()` method to control FK constraint and index emission:
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
const contract = defineContract<CodecTypes>()
|
|
112
|
+
.target(postgresPack)
|
|
113
|
+
// ...tables and models...
|
|
114
|
+
.foreignKeys({ constraints: true, indexes: false }) // Emit FK constraints but skip backing indexes
|
|
115
|
+
.build();
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
| Config | Default | Description |
|
|
119
|
+
|--------|---------|-------------|
|
|
120
|
+
| `constraints` | `true` | Emit `FOREIGN KEY` constraints in DDL |
|
|
121
|
+
| `indexes` | `true` | Emit FK-backing indexes (e.g., `CREATE INDEX ... ON post (user_id)`) |
|
|
122
|
+
|
|
123
|
+
When `.foreignKeys()` is not called, defaults to `{ constraints: true, indexes: true }`. See [ADR 161](../../../docs/architecture%20docs/adrs/ADR%20161%20-%20Explicit%20foreign%20key%20constraint%20and%20index%20configuration.md).
|
|
124
|
+
|
|
74
125
|
### Validating Contracts
|
|
75
126
|
|
|
127
|
+
Contract JSON validation now lives in `@prisma-next/sql-contract/validate` (shared plane), while this package focuses on authoring/building contracts.
|
|
128
|
+
|
|
76
129
|
```typescript
|
|
77
|
-
import { validateContract } from '@prisma-next/sql-contract
|
|
78
|
-
import type { SqlContract, SqlStorage } from '@prisma-next/sql-contract/types';
|
|
130
|
+
import { validateContract } from '@prisma-next/sql-contract/validate';
|
|
79
131
|
import type { Contract } from './contract.d';
|
|
80
132
|
|
|
81
|
-
// From JSON import
|
|
82
133
|
const contract = validateContract<Contract>(contractJson);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Config Helper
|
|
83
137
|
|
|
84
|
-
|
|
85
|
-
|
|
138
|
+
Use `typescriptContract` from this package when wiring TS-authored contracts in `prisma-next.config.ts`.
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
import { defineConfig } from '@prisma-next/cli/config-types';
|
|
142
|
+
import { typescriptContract } from '@prisma-next/sql-contract-ts/config-types';
|
|
143
|
+
import { contract } from './src/prisma/contract';
|
|
144
|
+
|
|
145
|
+
export default defineConfig({
|
|
146
|
+
// ...
|
|
147
|
+
contract: typescriptContract(contract, 'src/prisma/contract.json'),
|
|
148
|
+
});
|
|
86
149
|
```
|
|
87
150
|
|
|
88
151
|
## Dependencies
|
|
89
152
|
|
|
90
153
|
- **`@prisma-next/contract-authoring`** - Target-agnostic builder core (builder state types, builder classes, type helpers)
|
|
91
154
|
- **`@prisma-next/contract`** - Core contract types (`ContractBase`)
|
|
155
|
+
- **`@prisma-next/core-control-plane`** - Contract config types used by `typescriptContract`
|
|
92
156
|
- **`@prisma-next/sql-contract`** - SQL contract types (`SqlContract`, `SqlStorage`, `SqlMappings`)
|
|
93
157
|
- **`arktype`** - Runtime validation
|
|
94
158
|
- **`ts-toolbelt`** - Type utilities
|
|
@@ -106,4 +170,6 @@ Integration tests that depend on both `sql-contract-ts` and `sql-query` are loca
|
|
|
106
170
|
## See Also
|
|
107
171
|
|
|
108
172
|
- `@prisma-next/contract-authoring` - Target-agnostic builder core that this package composes
|
|
173
|
+
- `@prisma-next/sql-contract-psl` - PSL parser-output to SQL `ContractIR` interpreter for provider-based flows
|
|
174
|
+
- `@prisma-next/sql-contract-psl/provider` - SQL PSL-first `prismaContract()` helper (read -> parse -> interpret)
|
|
109
175
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ContractConfig, ContractConfig as ContractConfig$1 } from "@prisma-next/core-control-plane/config-types";
|
|
2
|
+
import { ContractIR } from "@prisma-next/contract/ir";
|
|
3
|
+
|
|
4
|
+
//#region src/config-types.d.ts
|
|
5
|
+
declare function typescriptContract(contractIR: ContractIR, output?: string): ContractConfig$1;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { type ContractConfig, typescriptContract };
|
|
8
|
+
//# sourceMappingURL=config-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-types.d.mts","names":[],"sources":["../src/config-types.ts"],"sourcesContent":[],"mappings":";;;;iBAKgB,kBAAA,aAA+B,8BAA8B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ifDefined } from "@prisma-next/utils/defined";
|
|
2
|
+
import { ok } from "@prisma-next/utils/result";
|
|
3
|
+
|
|
4
|
+
//#region src/config-types.ts
|
|
5
|
+
function typescriptContract(contractIR, output) {
|
|
6
|
+
return {
|
|
7
|
+
source: async () => ok(contractIR),
|
|
8
|
+
...ifDefined("output", output)
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
export { typescriptContract };
|
|
14
|
+
//# sourceMappingURL=config-types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-types.mjs","names":[],"sources":["../src/config-types.ts"],"sourcesContent":["import type { ContractIR } from '@prisma-next/contract/ir';\nimport type { ContractConfig } from '@prisma-next/core-control-plane/config-types';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { ok } from '@prisma-next/utils/result';\n\nexport function typescriptContract(contractIR: ContractIR, output?: string): ContractConfig {\n return {\n source: async () => ok(contractIR),\n ...ifDefined('output', output),\n };\n}\n"],"mappings":";;;;AAKA,SAAgB,mBAAmB,YAAwB,QAAiC;AAC1F,QAAO;EACL,QAAQ,YAAY,GAAG,WAAW;EAClC,GAAG,UAAU,UAAU,OAAO;EAC/B"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { BuildModels, BuildRelations, BuildStorageColumn, ColumnBuilderState, ContractBuilder, ContractBuilderState, ExtractColumns, ExtractPrimaryKey, ForeignKeyDefaultsState, ModelBuilder, ModelBuilderState, RelationDefinition, TableBuilder, TableBuilderState } from "@prisma-next/contract-authoring";
|
|
2
|
+
import { ReferentialAction, SqlContract, SqlMappings, StorageTypeInstance } from "@prisma-next/sql-contract/types";
|
|
3
|
+
import { ExtensionPackRef, TargetPackRef } from "@prisma-next/contract/framework-components";
|
|
4
|
+
|
|
5
|
+
//#region src/contract-builder.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Type-level mappings structure for contracts built via `defineContract()`.
|
|
9
|
+
*
|
|
10
|
+
* Compile-time type helper (not a runtime object) that ensures mappings match what the builder
|
|
11
|
+
* produces. `codecTypes` uses the generic `CodecTypes` parameter; `operationTypes` is always
|
|
12
|
+
* empty since operations are added via extensions at runtime.
|
|
13
|
+
*
|
|
14
|
+
* **Difference from ExecutionContext**: This is a compile-time type for contract construction.
|
|
15
|
+
* `ExecutionContext` is a runtime object with populated registries for query execution.
|
|
16
|
+
*
|
|
17
|
+
* @template C - The `CodecTypes` generic parameter passed to `defineContract<CodecTypes>()`
|
|
18
|
+
*/
|
|
19
|
+
type ContractBuilderMappings<C extends Record<string, {
|
|
20
|
+
output: unknown;
|
|
21
|
+
}>> = Omit<SqlMappings, 'codecTypes' | 'operationTypes'> & {
|
|
22
|
+
readonly codecTypes: C;
|
|
23
|
+
readonly operationTypes: Record<string, never>;
|
|
24
|
+
};
|
|
25
|
+
type BuildStorageTable<_TableName extends string, Columns extends Record<string, ColumnBuilderState<string, boolean, string>>, PK extends readonly string[] | undefined> = {
|
|
26
|
+
readonly columns: { readonly [K in keyof Columns]: Columns[K] extends ColumnBuilderState<string, infer Null, infer TType> ? BuildStorageColumn<Null & boolean, TType> : never };
|
|
27
|
+
readonly uniques: ReadonlyArray<{
|
|
28
|
+
readonly columns: readonly string[];
|
|
29
|
+
readonly name?: string;
|
|
30
|
+
}>;
|
|
31
|
+
readonly indexes: ReadonlyArray<{
|
|
32
|
+
readonly columns: readonly string[];
|
|
33
|
+
readonly name?: string;
|
|
34
|
+
}>;
|
|
35
|
+
readonly foreignKeys: ReadonlyArray<{
|
|
36
|
+
readonly columns: readonly string[];
|
|
37
|
+
readonly references: {
|
|
38
|
+
readonly table: string;
|
|
39
|
+
readonly columns: readonly string[];
|
|
40
|
+
};
|
|
41
|
+
readonly name?: string;
|
|
42
|
+
readonly onDelete?: ReferentialAction;
|
|
43
|
+
readonly onUpdate?: ReferentialAction;
|
|
44
|
+
readonly constraint: boolean;
|
|
45
|
+
readonly index: boolean;
|
|
46
|
+
}>;
|
|
47
|
+
} & (PK extends readonly string[] ? {
|
|
48
|
+
readonly primaryKey: {
|
|
49
|
+
readonly columns: PK;
|
|
50
|
+
readonly name?: string;
|
|
51
|
+
};
|
|
52
|
+
} : Record<string, never>);
|
|
53
|
+
type BuildStorage<Tables extends Record<string, TableBuilderState<string, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>>, Types extends Record<string, StorageTypeInstance>> = {
|
|
54
|
+
readonly tables: { readonly [K in keyof Tables]: BuildStorageTable<K & string, ExtractColumns<Tables[K]>, ExtractPrimaryKey<Tables[K]>> };
|
|
55
|
+
readonly types: Types;
|
|
56
|
+
};
|
|
57
|
+
interface ColumnBuilder<Name extends string, Nullable extends boolean, Type extends string> {
|
|
58
|
+
nullable<Value extends boolean>(value?: Value): ColumnBuilder<Name, Value, Type>;
|
|
59
|
+
type<Id extends string>(id: Id): ColumnBuilder<Name, Nullable, Id>;
|
|
60
|
+
build(): ColumnBuilderState<Name, Nullable, Type>;
|
|
61
|
+
}
|
|
62
|
+
declare class SqlContractBuilder<CodecTypes extends Record<string, {
|
|
63
|
+
output: unknown;
|
|
64
|
+
}> = Record<string, never>, Target extends string | undefined = undefined, Tables extends Record<string, TableBuilderState<string, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>> = Record<never, never>, Models extends Record<string, ModelBuilderState<string, string, Record<string, string>, Record<string, RelationDefinition>>> = Record<never, never>, Types extends Record<string, StorageTypeInstance> = Record<never, never>, StorageHash extends string | undefined = undefined, ExtensionPacks extends Record<string, unknown> | undefined = undefined, Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined> extends ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities> {
|
|
65
|
+
protected readonly state: ContractBuilderState<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities> & {
|
|
66
|
+
readonly storageTypes?: Types;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* This method is responsible for normalizing the contract IR by setting default values
|
|
70
|
+
* for all required fields:
|
|
71
|
+
* - `nullable`: defaults to `false` if not provided
|
|
72
|
+
* - `uniques`: defaults to `[]` (empty array)
|
|
73
|
+
* - `indexes`: defaults to `[]` (empty array)
|
|
74
|
+
* - `foreignKeys`: defaults to `[]` (empty array)
|
|
75
|
+
* - `relations`: defaults to `{}` (empty object) for both model-level and contract-level
|
|
76
|
+
* - `nativeType`: required field set from column type descriptor when columns are defined
|
|
77
|
+
*
|
|
78
|
+
* The contract builder is the **only** place where normalization should occur.
|
|
79
|
+
* Validators, parsers, and emitters should assume the contract is already normalized.
|
|
80
|
+
*
|
|
81
|
+
* **Required**: Use column type descriptors (e.g., `int4Column`, `textColumn`) when defining columns.
|
|
82
|
+
* This ensures `nativeType` is set correctly at build time.
|
|
83
|
+
*
|
|
84
|
+
* @returns A normalized SqlContract with all required fields present
|
|
85
|
+
*/
|
|
86
|
+
build(): Target extends string ? SqlContract<BuildStorage<Tables, Types>, BuildModels<Models>, BuildRelations<Models>, ContractBuilderMappings<CodecTypes>> & {
|
|
87
|
+
readonly schemaVersion: '1';
|
|
88
|
+
readonly target: Target;
|
|
89
|
+
readonly targetFamily: 'sql';
|
|
90
|
+
readonly storageHash: StorageHash extends string ? StorageHash : string;
|
|
91
|
+
} & (ExtensionPacks extends Record<string, unknown> ? {
|
|
92
|
+
readonly extensionPacks: ExtensionPacks;
|
|
93
|
+
} : Record<string, never>) & (Capabilities extends Record<string, Record<string, boolean>> ? {
|
|
94
|
+
readonly capabilities: Capabilities;
|
|
95
|
+
} : Record<string, never>) : never;
|
|
96
|
+
target<T extends string>(packRef: TargetPackRef<'sql', T>): SqlContractBuilder<CodecTypes, T, Tables, Models, Types, StorageHash, ExtensionPacks, Capabilities>;
|
|
97
|
+
extensionPacks(packs: Record<string, ExtensionPackRef<'sql', string>>): SqlContractBuilder<CodecTypes, Target, Tables, Models, Types, StorageHash, ExtensionPacks, Capabilities>;
|
|
98
|
+
capabilities<C extends Record<string, Record<string, boolean>>>(capabilities: C): SqlContractBuilder<CodecTypes, Target, Tables, Models, Types, StorageHash, ExtensionPacks, C>;
|
|
99
|
+
storageHash<H extends string>(hash: H): SqlContractBuilder<CodecTypes, Target, Tables, Models, Types, H, ExtensionPacks, Capabilities>;
|
|
100
|
+
table<TableName extends string, T extends TableBuilder<TableName, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>>(name: TableName, callback: (t: TableBuilder<TableName>) => T | undefined): SqlContractBuilder<CodecTypes, Target, Tables & Record<TableName, ReturnType<T['build']>>, Models, Types, StorageHash, ExtensionPacks, Capabilities>;
|
|
101
|
+
model<ModelName extends string, TableName extends string, M extends ModelBuilder<ModelName, TableName, Record<string, string>, Record<string, RelationDefinition>>>(name: ModelName, table: TableName, callback: (m: ModelBuilder<ModelName, TableName, Record<string, string>, Record<never, never>>) => M | undefined): SqlContractBuilder<CodecTypes, Target, Tables, Models & Record<ModelName, ReturnType<M['build']>>, Types, StorageHash, ExtensionPacks, Capabilities>;
|
|
102
|
+
foreignKeyDefaults(config: ForeignKeyDefaultsState): SqlContractBuilder<CodecTypes, Target, Tables, Models, Types, StorageHash, ExtensionPacks, Capabilities>;
|
|
103
|
+
storageType<Name extends string, Type extends StorageTypeInstance>(name: Name, typeInstance: Type): SqlContractBuilder<CodecTypes, Target, Tables, Models, Types & Record<Name, Type>, StorageHash, ExtensionPacks, Capabilities>;
|
|
104
|
+
}
|
|
105
|
+
declare function defineContract<CodecTypes extends Record<string, {
|
|
106
|
+
output: unknown;
|
|
107
|
+
}> = Record<string, never>>(): SqlContractBuilder<CodecTypes>;
|
|
108
|
+
//#endregion
|
|
109
|
+
export { type ColumnBuilder, defineContract };
|
|
110
|
+
//# sourceMappingURL=contract-builder.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-builder.d.mts","names":[],"sources":["../src/contract-builder.ts"],"sourcesContent":[],"mappings":"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"}
|