effect-qb 0.19.0 → 0.20.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/README.md +7 -1
- package/dist/index.js +1990 -679
- package/dist/mysql.js +1490 -617
- package/dist/postgres/metadata.js +1334 -263
- package/dist/postgres.js +3376 -2307
- package/dist/sqlite.js +1573 -628
- package/dist/standard.js +1984 -673
- package/package.json +2 -4
- package/src/internal/coercion/rules.ts +13 -1
- package/src/internal/column-state.d.ts +3 -3
- package/src/internal/column-state.ts +13 -12
- package/src/internal/column.ts +8 -8
- package/src/internal/datatypes/define.ts +5 -0
- package/src/internal/datatypes/lookup.ts +67 -18
- package/src/internal/datatypes/matrix.ts +903 -0
- package/src/internal/datatypes/shape.ts +2 -0
- package/src/internal/dialect-renderers/mysql.ts +6 -4
- package/src/internal/dialect-renderers/postgres.ts +6 -4
- package/src/internal/dialect-renderers/sqlite.ts +6 -4
- package/src/internal/dialect.ts +1 -1
- package/src/internal/executor.ts +56 -43
- package/src/internal/json/path-access.ts +351 -0
- package/src/internal/query.d.ts +1 -1
- package/src/internal/query.ts +1 -1
- package/src/internal/runtime/driver-value-mapping.ts +3 -3
- package/src/internal/runtime/schema.ts +28 -38
- package/src/internal/runtime/value.ts +20 -23
- package/src/internal/scalar.d.ts +1 -1
- package/src/internal/scalar.ts +2 -1
- package/src/internal/schema-derivation.d.ts +7 -7
- package/src/internal/schema-derivation.ts +11 -11
- package/src/internal/standard-dsl.ts +121 -28
- package/src/internal/table.ts +451 -120
- package/src/mysql/column.ts +6 -6
- package/src/mysql/datatypes/index.ts +1 -0
- package/src/mysql/datatypes/spec.ts +6 -176
- package/src/mysql/errors/normalize.ts +0 -1
- package/src/mysql/executor.ts +4 -6
- package/src/mysql/function/temporal.ts +1 -1
- package/src/mysql/internal/dsl.ts +116 -16
- package/src/mysql/json.ts +1 -33
- package/src/mysql/renderer.ts +13 -6
- package/src/mysql/type.ts +60 -0
- package/src/mysql.ts +3 -1
- package/src/postgres/check.ts +1 -0
- package/src/postgres/column.ts +11 -11
- package/src/postgres/datatypes/index.ts +1 -0
- package/src/postgres/datatypes/spec.ts +6 -260
- package/src/postgres/errors/normalize.ts +0 -1
- package/src/postgres/executor.ts +4 -6
- package/src/postgres/foreign-key.ts +24 -0
- package/src/postgres/function/temporal.ts +1 -1
- package/src/postgres/index.ts +1 -0
- package/src/postgres/internal/dsl.ts +122 -21
- package/src/postgres/json-extension.ts +7 -0
- package/src/postgres/json.ts +726 -173
- package/src/postgres/jsonb.ts +0 -1
- package/src/postgres/primary-key.ts +24 -0
- package/src/postgres/renderer.ts +13 -6
- package/src/postgres/schema-management.ts +1 -6
- package/src/postgres/schema.ts +16 -8
- package/src/postgres/table.ts +111 -113
- package/src/postgres/type.ts +86 -4
- package/src/postgres/unique.ts +32 -0
- package/src/postgres.ts +12 -6
- package/src/sqlite/column.ts +6 -6
- package/src/sqlite/datatypes/index.ts +1 -0
- package/src/sqlite/datatypes/spec.ts +6 -94
- package/src/sqlite/errors/normalize.ts +0 -1
- package/src/sqlite/executor.ts +4 -6
- package/src/sqlite/function/temporal.ts +1 -1
- package/src/sqlite/internal/dsl.ts +100 -5
- package/src/sqlite/json.ts +1 -32
- package/src/sqlite/renderer.ts +13 -6
- package/src/sqlite/type.ts +40 -0
- package/src/sqlite.ts +3 -1
- package/src/standard/cast.ts +113 -0
- package/src/standard/check.ts +17 -0
- package/src/standard/column.ts +10 -10
- package/src/standard/datatypes/index.ts +2 -2
- package/src/standard/datatypes/spec.ts +10 -96
- package/src/standard/foreign-key.ts +37 -0
- package/src/standard/function/temporal.ts +1 -1
- package/src/standard/index.ts +17 -0
- package/src/standard/json.ts +883 -0
- package/src/standard/primary-key.ts +17 -0
- package/src/standard/renderer.ts +31 -3
- package/src/standard/table.ts +25 -21
- package/src/standard/unique.ts +17 -0
- package/src/standard.ts +14 -0
- package/src/internal/table.d.ts +0 -174
- package/src/postgres/cast.ts +0 -45
|
@@ -114,6 +114,7 @@ import * as ExpressionAst from "../../internal/expression-ast.js"
|
|
|
114
114
|
import { presenceWitnessesOfSourceLike } from "../../internal/implication-runtime.js"
|
|
115
115
|
import type { JsonNode } from "../../internal/json/ast.js"
|
|
116
116
|
import type { JsonPathUsageError } from "../../internal/json/errors.js"
|
|
117
|
+
import { withJsonPathAccess } from "../../internal/json/path-access.js"
|
|
117
118
|
import * as JsonPath from "../../internal/json/path.js"
|
|
118
119
|
import type {
|
|
119
120
|
JsonConcatResult,
|
|
@@ -1553,11 +1554,14 @@ const profile: QueryDialectProfile<Dialect, TextDb, NumericDb, BoolDb, Timestamp
|
|
|
1553
1554
|
|
|
1554
1555
|
const literalSchemaOf = <Value extends LiteralValue>(
|
|
1555
1556
|
value: Value
|
|
1556
|
-
): Schema.
|
|
1557
|
+
): Schema.Top | undefined => {
|
|
1557
1558
|
if (value === null || value instanceof Date) {
|
|
1558
1559
|
return undefined
|
|
1559
1560
|
}
|
|
1560
|
-
|
|
1561
|
+
if (typeof value === "number" && !Number.isFinite(value)) {
|
|
1562
|
+
return undefined
|
|
1563
|
+
}
|
|
1564
|
+
return Schema.Literal(value) as unknown as Schema.Top
|
|
1561
1565
|
}
|
|
1562
1566
|
|
|
1563
1567
|
const literal = <const Value extends LiteralValue>(
|
|
@@ -2402,7 +2406,7 @@ type BinaryPredicateExpression<
|
|
|
2402
2406
|
MergeAggregationTuple<typeof expressions>,
|
|
2403
2407
|
TupleDependencies<typeof expressions>,
|
|
2404
2408
|
Ast
|
|
2405
|
-
> => makeExpression({
|
|
2409
|
+
> => withJsonPathAccess(makeExpression({
|
|
2406
2410
|
runtime: state.runtime,
|
|
2407
2411
|
dbType: state.dbType,
|
|
2408
2412
|
nullability: state.nullability,
|
|
@@ -2410,7 +2414,7 @@ type BinaryPredicateExpression<
|
|
|
2410
2414
|
kind: mergeAggregationManyRuntime(expressions) as MergeAggregationTuple<typeof expressions>,
|
|
2411
2415
|
|
|
2412
2416
|
dependencies: mergeManyDependencies(expressions)
|
|
2413
|
-
}, ast) as AstBackedExpression<
|
|
2417
|
+
}, ast)) as AstBackedExpression<
|
|
2414
2418
|
Runtime,
|
|
2415
2419
|
Db,
|
|
2416
2420
|
Nullability,
|
|
@@ -2431,7 +2435,7 @@ type BinaryPredicateExpression<
|
|
|
2431
2435
|
const makeJsonLiteralExpression = <Value extends JsonLiteralInput>(
|
|
2432
2436
|
value: Value,
|
|
2433
2437
|
dbType: Expression.DbType.Json<any, any> = jsonDb
|
|
2434
|
-
) => makeExpression({
|
|
2438
|
+
) => withJsonPathAccess(makeExpression({
|
|
2435
2439
|
runtime: value as JsonRuntime<Value>,
|
|
2436
2440
|
dbType,
|
|
2437
2441
|
nullability: (value === null ? "always" : "never") as JsonNullabilityOf<Value>,
|
|
@@ -2442,7 +2446,7 @@ type BinaryPredicateExpression<
|
|
|
2442
2446
|
}, {
|
|
2443
2447
|
kind: "literal",
|
|
2444
2448
|
value
|
|
2445
|
-
})
|
|
2449
|
+
}))
|
|
2446
2450
|
|
|
2447
2451
|
const wrapJsonExpression = (
|
|
2448
2452
|
value: Expression.Any,
|
|
@@ -4523,6 +4527,83 @@ type ValidateTargetColumnInput<
|
|
|
4523
4527
|
Columns extends DdlColumnInput
|
|
4524
4528
|
> = ValidateTargetColumns<Target, NormalizeDdlColumns<Columns>> extends never ? never : Columns
|
|
4525
4529
|
|
|
4530
|
+
type SameColumnSet<
|
|
4531
|
+
Left extends readonly string[],
|
|
4532
|
+
Right extends readonly string[]
|
|
4533
|
+
> = string extends Left[number] | Right[number]
|
|
4534
|
+
? false
|
|
4535
|
+
: Exclude<Left[number], Right[number]> extends never
|
|
4536
|
+
? Exclude<Right[number], Left[number]> extends never
|
|
4537
|
+
? true
|
|
4538
|
+
: false
|
|
4539
|
+
: false
|
|
4540
|
+
|
|
4541
|
+
type ConflictArbitersOf<Target extends MutationTargetLike> =
|
|
4542
|
+
Target[typeof Table.TypeId]["conflictArbiters"][number]
|
|
4543
|
+
|
|
4544
|
+
type MatchingConflictArbiter<
|
|
4545
|
+
Target extends MutationTargetLike,
|
|
4546
|
+
Columns extends readonly string[],
|
|
4547
|
+
AllowPartial extends boolean
|
|
4548
|
+
> = ConflictArbitersOf<Target> extends infer Arbiter extends Table.ConflictArbiter
|
|
4549
|
+
? Arbiter extends Table.ConflictArbiter
|
|
4550
|
+
? SameColumnSet<Arbiter["columns"], Columns> extends true
|
|
4551
|
+
? Arbiter["scope"] extends "unconditional"
|
|
4552
|
+
? true
|
|
4553
|
+
: AllowPartial extends true ? true : never
|
|
4554
|
+
: never
|
|
4555
|
+
: never
|
|
4556
|
+
: never
|
|
4557
|
+
|
|
4558
|
+
type HasInlineConflictArbiter<
|
|
4559
|
+
Target extends MutationTargetLike,
|
|
4560
|
+
Columns extends readonly string[]
|
|
4561
|
+
> = Columns extends readonly [infer Column extends Extract<keyof Target[typeof Table.TypeId]["fields"], string>]
|
|
4562
|
+
? Target[typeof Table.TypeId]["fields"][Column] extends { readonly metadata: { readonly primaryKey: true } | { readonly unique: true } }
|
|
4563
|
+
? true
|
|
4564
|
+
: false
|
|
4565
|
+
: false
|
|
4566
|
+
|
|
4567
|
+
type HasConflictArbiter<
|
|
4568
|
+
Target extends MutationTargetLike,
|
|
4569
|
+
Columns extends readonly string[],
|
|
4570
|
+
AllowPartial extends boolean
|
|
4571
|
+
> = string extends Extract<keyof Target[typeof Table.TypeId]["fields"], string>
|
|
4572
|
+
? true
|
|
4573
|
+
: HasInlineConflictArbiter<Target, Columns> extends true
|
|
4574
|
+
? true
|
|
4575
|
+
: true extends MatchingConflictArbiter<Target, Columns, AllowPartial> ? true : false
|
|
4576
|
+
|
|
4577
|
+
type ConflictTargetArbiterError<
|
|
4578
|
+
Columns,
|
|
4579
|
+
AllowPartial extends boolean
|
|
4580
|
+
> = {
|
|
4581
|
+
readonly __effect_qb_error__: "effect-qb: conflict target columns must match a primary key, unique constraint, or unique index"
|
|
4582
|
+
readonly __effect_qb_conflict_columns__: Columns
|
|
4583
|
+
readonly __effect_qb_partial_target__: AllowPartial
|
|
4584
|
+
readonly __effect_qb_hint__: "Declare the target columns as primaryKey/unique, add a table-level Unique.make(...), or use a simple Pg.Index.uniqueIndex(...)"
|
|
4585
|
+
}
|
|
4586
|
+
|
|
4587
|
+
type ValidateConflictColumnInput<
|
|
4588
|
+
Target extends MutationTargetLike,
|
|
4589
|
+
Columns extends DdlColumnInput,
|
|
4590
|
+
AllowPartial extends boolean
|
|
4591
|
+
> = ValidateTargetColumnInput<Target, Columns> extends never
|
|
4592
|
+
? never
|
|
4593
|
+
: HasConflictArbiter<Target, NormalizeDdlColumns<Columns>, AllowPartial> extends true
|
|
4594
|
+
? Columns
|
|
4595
|
+
: ConflictTargetArbiterError<NormalizeDdlColumns<Columns>, AllowPartial>
|
|
4596
|
+
|
|
4597
|
+
type ConflictColumnPlanConstraint<
|
|
4598
|
+
Target extends MutationTargetLike,
|
|
4599
|
+
Columns extends DdlColumnInput,
|
|
4600
|
+
AllowPartial extends boolean
|
|
4601
|
+
> = ValidateTargetColumnInput<Target, Columns> extends never
|
|
4602
|
+
? never
|
|
4603
|
+
: HasConflictArbiter<Target, NormalizeDdlColumns<Columns>, AllowPartial> extends true
|
|
4604
|
+
? unknown
|
|
4605
|
+
: ConflictTargetArbiterError<NormalizeDdlColumns<Columns>, AllowPartial>
|
|
4606
|
+
|
|
4526
4607
|
type CreateIndexOptions<Name extends string = string> = {
|
|
4527
4608
|
readonly name?: NonEmptyStringInput<Name>
|
|
4528
4609
|
readonly unique?: boolean
|
|
@@ -4961,6 +5042,21 @@ type ConflictConstraintNameConstraint<Target> =
|
|
|
4961
5042
|
? { readonly constraint: NonEmptyStringInput<Constraint> }
|
|
4962
5043
|
: unknown
|
|
4963
5044
|
|
|
5045
|
+
type ConflictTargetHasPredicate<Target> =
|
|
5046
|
+
Target extends { readonly where: PredicateInput } ? true : false
|
|
5047
|
+
|
|
5048
|
+
type ConflictTargetPlanConstraint<
|
|
5049
|
+
Target extends MutationTargetLike,
|
|
5050
|
+
ConflictTarget
|
|
5051
|
+
> =
|
|
5052
|
+
ConflictTarget extends { readonly constraint: string }
|
|
5053
|
+
? unknown
|
|
5054
|
+
: ConflictTarget extends { readonly columns: infer Columns extends DdlColumnInput }
|
|
5055
|
+
? ConflictColumnPlanConstraint<Target, Columns, ConflictTargetHasPredicate<ConflictTarget>>
|
|
5056
|
+
: ConflictTarget extends DdlColumnInput
|
|
5057
|
+
? ConflictColumnPlanConstraint<Target, ConflictTarget, false>
|
|
5058
|
+
: unknown
|
|
5059
|
+
|
|
4964
5060
|
type ConflictActionInput<
|
|
4965
5061
|
Target extends MutationTargetLike,
|
|
4966
5062
|
Dialect extends string,
|
|
@@ -5114,6 +5210,11 @@ type MutationTargetTupleDialectConstraint<
|
|
|
5114
5210
|
Dialect extends string
|
|
5115
5211
|
> = Exclude<TableDialectOf<Targets[number]>, Dialect | "standard"> extends never ? unknown : never
|
|
5116
5212
|
|
|
5213
|
+
type TableDialectConstraint<
|
|
5214
|
+
Target extends TableLike,
|
|
5215
|
+
Dialect extends string
|
|
5216
|
+
> = Exclude<TableDialectOf<Target>, Dialect> extends never ? unknown : never
|
|
5217
|
+
|
|
5117
5218
|
type MutationRequiredFromValues<Values extends Record<string, unknown>> = {
|
|
5118
5219
|
[K in keyof Values]: Values[K] extends Expression.Any ? RequiredFromDependencies<DependenciesOf<Values[K]>> : never
|
|
5119
5220
|
}[keyof Values]
|
|
@@ -6268,7 +6369,7 @@ type AsCurriedResult<
|
|
|
6268
6369
|
|
|
6269
6370
|
export interface InsertApi {
|
|
6270
6371
|
<Target extends MutationTargetLike>(
|
|
6271
|
-
target: Target
|
|
6372
|
+
target: Target & TableDialectConstraint<Target, Dialect>
|
|
6272
6373
|
): QueryPlan<
|
|
6273
6374
|
{},
|
|
6274
6375
|
never,
|
|
@@ -6285,7 +6386,7 @@ type AsCurriedResult<
|
|
|
6285
6386
|
EmptyFacts
|
|
6286
6387
|
>
|
|
6287
6388
|
<Target extends MutationTargetLike, Values extends Record<string, unknown>>(
|
|
6288
|
-
target: Target,
|
|
6389
|
+
target: Target & TableDialectConstraint<Target, Dialect>,
|
|
6289
6390
|
values: MutationValuesInput<"insert", Target, Values> & MutationValuesDialectConstraint<Values, Dialect, TextDb, NumericDb, BoolDb, TimestampDb, NullDb>
|
|
6290
6391
|
): QueryPlan<
|
|
6291
6392
|
{},
|
|
@@ -6318,9 +6419,9 @@ type AsCurriedResult<
|
|
|
6318
6419
|
>(
|
|
6319
6420
|
target: ConflictTarget & ConflictConstraintNameConstraint<ConflictTarget>,
|
|
6320
6421
|
options?: Options & ConflictActionUpdateNonEmptyConstraint<Options>
|
|
6321
|
-
|
|
6422
|
+
) =>
|
|
6322
6423
|
<PlanValue extends QueryPlan<any, any, any, any, any, any, any, any, any, any>>(
|
|
6323
|
-
plan: PlanValue & RequireInsertStatement<PlanValue>
|
|
6424
|
+
plan: PlanValue & RequireInsertStatement<PlanValue> & ConflictTargetPlanConstraint<MutationTargetOfPlan<PlanValue>, ConflictTarget>
|
|
6324
6425
|
) => QueryPlan<
|
|
6325
6426
|
SelectionOfPlan<PlanValue>,
|
|
6326
6427
|
Exclude<RequiredOfPlan<PlanValue> | ConflictRequired<UpdateValues, Options, ConflictTarget>, AvailableNames<AvailableOfPlan<PlanValue>>>,
|
|
@@ -6357,7 +6458,7 @@ type AsCurriedResult<
|
|
|
6357
6458
|
EmptyFacts
|
|
6358
6459
|
>
|
|
6359
6460
|
<Target extends MutationTargetLike, Values extends Record<string, unknown>>(
|
|
6360
|
-
target: Target,
|
|
6461
|
+
target: Target & TableDialectConstraint<Target, Dialect>,
|
|
6361
6462
|
values: MutationValuesInput<"update", Target, Values> & UpdateValuesNonEmptyConstraint<Values> & MutationValuesDialectConstraint<Values, Dialect, TextDb, NumericDb, BoolDb, TimestampDb, NullDb>
|
|
6362
6463
|
): QueryPlan<
|
|
6363
6464
|
{},
|
|
@@ -6382,9 +6483,9 @@ type AsCurriedResult<
|
|
|
6382
6483
|
const Columns extends DdlColumnInput,
|
|
6383
6484
|
UpdateValues extends MutationInputOf<Table.UpdateOf<Target>> | undefined = undefined
|
|
6384
6485
|
>(
|
|
6385
|
-
target: Target,
|
|
6486
|
+
target: Target & TableDialectConstraint<Target, Dialect>,
|
|
6386
6487
|
values: Values & MutationValuesDialectConstraint<Values, Dialect, TextDb, NumericDb, BoolDb, TimestampDb, NullDb>,
|
|
6387
|
-
conflictColumns:
|
|
6488
|
+
conflictColumns: ValidateConflictColumnInput<Target, Columns, false>,
|
|
6388
6489
|
updateValues?: UpdateValues & UpdateValuesNonEmptyConstraint<Exclude<UpdateValues, undefined>> & MutationValuesDialectConstraint<Exclude<UpdateValues, undefined>, Dialect, TextDb, NumericDb, BoolDb, TimestampDb, NullDb>
|
|
6389
6490
|
) => QueryPlan<
|
|
6390
6491
|
{},
|
|
@@ -6406,7 +6507,7 @@ type AsCurriedResult<
|
|
|
6406
6507
|
|
|
6407
6508
|
interface DeleteApi {
|
|
6408
6509
|
<Target extends MutationTargetLike>(
|
|
6409
|
-
target: Target
|
|
6510
|
+
target: Target & TableDialectConstraint<Target, Dialect>
|
|
6410
6511
|
): QueryPlan<
|
|
6411
6512
|
{},
|
|
6412
6513
|
never,
|
|
@@ -6442,7 +6543,7 @@ type AsCurriedResult<
|
|
|
6442
6543
|
}
|
|
6443
6544
|
|
|
6444
6545
|
type TruncateApi = <Target extends MutationTargetLike>(
|
|
6445
|
-
target: Target,
|
|
6546
|
+
target: Target & TableDialectConstraint<Target, Dialect>,
|
|
6446
6547
|
options?: TruncateOptions
|
|
6447
6548
|
) => QueryPlan<
|
|
6448
6549
|
{},
|
|
@@ -6469,10 +6570,10 @@ type AsCurriedResult<
|
|
|
6469
6570
|
MatchedPredicate extends PredicateInput | undefined = undefined,
|
|
6470
6571
|
NotMatchedPredicate extends PredicateInput | undefined = undefined
|
|
6471
6572
|
>(
|
|
6472
|
-
target: Target,
|
|
6573
|
+
target: Target & TableDialectConstraint<Target, Dialect>,
|
|
6473
6574
|
source: Source & (
|
|
6474
6575
|
SourceRequiredOf<Source> extends never ? unknown : SourceRequirementError<Source>
|
|
6475
|
-
) &
|
|
6576
|
+
) & MergeSourceNameConstraint<Target, Source> & SourceDialectConstraint<Source, Dialect>,
|
|
6476
6577
|
on: On,
|
|
6477
6578
|
options: MergeOptions<Target, MatchedValues, InsertValues, MatchedPredicate, NotMatchedPredicate>
|
|
6478
6579
|
) => QueryPlan<
|
|
@@ -6674,7 +6775,7 @@ type AsCurriedResult<
|
|
|
6674
6775
|
>
|
|
6675
6776
|
|
|
6676
6777
|
type CreateTableApi = <Target extends SchemaTableLike>(
|
|
6677
|
-
target: Target,
|
|
6778
|
+
target: Target & TableDialectConstraint<Target, Dialect>,
|
|
6678
6779
|
options?: CreateTableOptions
|
|
6679
6780
|
) => QueryPlan<
|
|
6680
6781
|
{},
|
|
@@ -6690,7 +6791,7 @@ type AsCurriedResult<
|
|
|
6690
6791
|
>
|
|
6691
6792
|
|
|
6692
6793
|
type DropTableApi = <Target extends SchemaTableLike>(
|
|
6693
|
-
target: Target,
|
|
6794
|
+
target: Target & TableDialectConstraint<Target, Dialect>,
|
|
6694
6795
|
options?: DropTableOptions
|
|
6695
6796
|
) => QueryPlan<
|
|
6696
6797
|
{},
|
|
@@ -6706,7 +6807,7 @@ type AsCurriedResult<
|
|
|
6706
6807
|
>
|
|
6707
6808
|
|
|
6708
6809
|
type CreateIndexApi = <Target extends SchemaTableLike, const Columns extends DdlColumnInput, Name extends string = string>(
|
|
6709
|
-
target: Target,
|
|
6810
|
+
target: Target & TableDialectConstraint<Target, Dialect>,
|
|
6710
6811
|
columns: Columns & ValidateDdlColumnInput<Target, Columns>,
|
|
6711
6812
|
options?: CreateIndexOptions<Name>
|
|
6712
6813
|
) => QueryPlan<
|
|
@@ -6723,7 +6824,7 @@ type AsCurriedResult<
|
|
|
6723
6824
|
>
|
|
6724
6825
|
|
|
6725
6826
|
type DropIndexApi = <Target extends SchemaTableLike, const Columns extends DdlColumnInput, Name extends string = string>(
|
|
6726
|
-
target: Target,
|
|
6827
|
+
target: Target & TableDialectConstraint<Target, Dialect>,
|
|
6727
6828
|
columns: Columns & ValidateDdlColumnInput<Target, Columns>,
|
|
6728
6829
|
options?: DropIndexOptions<Name>
|
|
6729
6830
|
) => QueryPlan<
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { json } from "./json.js"
|
|
2
|
+
|
|
3
|
+
/** Removes null object fields using Postgres json/jsonb strip-null functions. */
|
|
4
|
+
export const stripNulls = json.stripNulls
|
|
5
|
+
|
|
6
|
+
/** Evaluates a Postgres SQL/JSON path predicate with the @@ operator. */
|
|
7
|
+
export const pathMatch = json.pathMatch
|