pipework 0.252.0 → 0.252.1
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/CHANGELOG.md +5 -0
- package/package.json +4 -3
- package/src/async/jobs/abortable-delay.ts +18 -0
- package/src/async/jobs/claims.ts +52 -0
- package/src/async/jobs/cron.ts +179 -0
- package/src/async/jobs/errors.ts +56 -0
- package/src/async/jobs/exclusion.ts +117 -0
- package/src/async/jobs/execute.ts +219 -0
- package/src/async/jobs/index.ts +10 -0
- package/src/async/jobs/listener.ts +135 -0
- package/src/async/jobs/namespace.ts +20 -0
- package/src/async/jobs/queue-door.ts +44 -0
- package/src/async/jobs/queue.ts +1012 -0
- package/src/async/jobs/run-script.ts +67 -0
- package/src/async/jobs/scheduler.ts +218 -0
- package/src/async/jobs/schedules-table.ts +37 -0
- package/src/async/jobs/serialize-error.ts +48 -0
- package/src/async/jobs/table.ts +191 -0
- package/src/async/pipeline/define.ts +53 -0
- package/src/async/pipeline/errors.ts +35 -0
- package/src/async/pipeline/execute.ts +53 -0
- package/src/async/pipeline/index.ts +13 -0
- package/src/async/pipeline/namespace.ts +12 -0
- package/src/async/pipeline/resume.ts +67 -0
- package/src/async/pipeline/run-steps.ts +98 -0
- package/src/async/pipeline/types.ts +57 -0
- package/src/async/state-machine/define.ts +64 -0
- package/src/async/state-machine/errors.ts +29 -0
- package/src/async/state-machine/index.ts +3 -0
- package/src/async/state-machine/namespace.ts +12 -0
- package/src/async/state-machine/transition.ts +90 -0
- package/src/async/state-machine/types.ts +37 -0
- package/src/async/steps/errors.ts +31 -0
- package/src/async/steps/graph.ts +1214 -0
- package/src/async/steps/hash.ts +40 -0
- package/src/async/steps/index.ts +7 -0
- package/src/async/steps/namespace.ts +7 -0
- package/src/async/steps/table.ts +97 -0
- package/src/async/steps/types.ts +318 -0
- package/src/audit/chain/index.ts +9 -0
- package/src/audit/chain/install.ts +113 -0
- package/src/audit/chain/retire.ts +52 -0
- package/src/audit/chain/verify.ts +257 -0
- package/src/audit/query/cursor.ts +37 -0
- package/src/audit/query/index.ts +9 -0
- package/src/audit/query/query.ts +223 -0
- package/src/audit/schema/audit-record-fields.ts +68 -0
- package/src/audit/schema/audit-record.ts +23 -0
- package/src/auth/auth/audit.ts +31 -0
- package/src/auth/auth/chain.ts +84 -0
- package/src/auth/auth/cookie.ts +136 -0
- package/src/auth/auth/email-links.ts +311 -0
- package/src/auth/auth/guard.ts +128 -0
- package/src/auth/auth/index.ts +18 -0
- package/src/auth/auth/multi-org.ts +337 -0
- package/src/auth/auth/namespace.ts +34 -0
- package/src/auth/auth/parse-expiry.ts +13 -0
- package/src/auth/auth/passwords.ts +110 -0
- package/src/auth/auth/schema.ts +110 -0
- package/src/auth/auth/sessions.ts +565 -0
- package/src/auth/auth/sign-in.ts +156 -0
- package/src/auth/auth/signing-keys.ts +69 -0
- package/src/auth/auth/types.ts +26 -0
- package/src/auth/auth/uuid.ts +10 -0
- package/src/auth/rbac/cache.ts +55 -0
- package/src/auth/rbac/check.ts +30 -0
- package/src/auth/rbac/create.ts +35 -0
- package/src/auth/rbac/index.ts +5 -0
- package/src/auth/rbac/middleware.ts +20 -0
- package/src/auth/rbac/namespace.ts +15 -0
- package/src/auth/rbac/resolve.ts +31 -0
- package/src/auth/rbac/schema.sql +31 -0
- package/src/auth/rbac/seed.ts +67 -0
- package/src/auth/rbac/tables.ts +32 -0
- package/src/auth/rbac/types.ts +65 -0
- package/src/auth/tenant/extract.ts +33 -0
- package/src/auth/tenant/in-tenant.ts +49 -0
- package/src/auth/tenant/index.ts +7 -0
- package/src/auth/tenant/namespace.ts +23 -0
- package/src/auth/tenant/propagate.ts +20 -0
- package/src/auth/tenant/rls.ts +120 -0
- package/src/auth/tenant/scope.ts +33 -0
- package/src/auth/tenant/scoped-db.ts +581 -0
- package/src/auth/tenant/types.ts +14 -0
- package/src/auth/tenant/validate.ts +27 -0
- package/src/cli/commands/add.ts +158 -0
- package/src/cli/commands/alerts.ts +98 -0
- package/src/cli/commands/check.ts +1418 -0
- package/src/cli/commands/codemod.ts +78 -0
- package/src/cli/commands/db.ts +356 -0
- package/src/cli/commands/dev.ts +101 -0
- package/src/cli/commands/generate.ts +75 -0
- package/src/cli/commands/init.ts +36 -0
- package/src/cli/commands/install.ts +28 -0
- package/src/cli/commands/lint.ts +62 -0
- package/src/cli/commands/migrate.ts +132 -0
- package/src/cli/commands/openapi.ts +63 -0
- package/src/cli/commands/remove.ts +72 -0
- package/src/cli/commands/run.ts +50 -0
- package/src/cli/commands/scope.ts +54 -0
- package/src/cli/commands/serve.ts +68 -0
- package/src/cli/commands/shard.ts +31 -0
- package/src/cli/commands/shared/config-pipework-version.ts +28 -0
- package/src/cli/commands/shared/find-config.ts +22 -0
- package/src/cli/commands/shared/load-config.ts +35 -0
- package/src/cli/commands/shared/pnpm-install.ts +95 -0
- package/src/cli/commands/shared/report-removed.ts +8 -0
- package/src/cli/commands/sync.ts +32 -0
- package/src/cli/commands/test.ts +307 -0
- package/src/cli/commands/upgrade.ts +48 -0
- package/src/cli/dev-bootstrap.ts +24 -0
- package/src/cli/errors.ts +10 -0
- package/src/cli/index.ts +303 -0
- package/src/cli/output.ts +17 -0
- package/src/cli/port.ts +15 -0
- package/src/cli/surface-kinds.ts +20 -0
- package/src/client/index.ts +4 -0
- package/src/client/poll.ts +130 -0
- package/src/client/report-fault.ts +119 -0
- package/src/core/config/app-pool.ts +19 -0
- package/src/core/config/aws-env.ts +29 -0
- package/src/core/config/base-dir.ts +24 -0
- package/src/core/config/discover.ts +64 -0
- package/src/core/config/env-resolve.ts +87 -0
- package/src/core/config/env-types.ts +116 -0
- package/src/core/config/env.ts +55 -0
- package/src/core/config/errors.ts +9 -0
- package/src/core/config/import-config.ts +40 -0
- package/src/core/config/index.ts +8 -0
- package/src/core/config/load.ts +417 -0
- package/src/core/config/namespace.ts +14 -0
- package/src/core/config/resolve.ts +195 -0
- package/src/core/config/schema.ts +488 -0
- package/src/core/config/statement-observer.ts +48 -0
- package/src/core/config/ts-inline-hooks.ts +75 -0
- package/src/core/config/ts-register.ts +4 -0
- package/src/core/config/ts-resolve-hooks.ts +101 -0
- package/src/core/errors/base.ts +49 -0
- package/src/core/errors/http.ts +146 -0
- package/src/core/errors/index.ts +2 -0
- package/src/core/errors/namespace.ts +31 -0
- package/src/core/lifecycle/drain.ts +33 -0
- package/src/core/lifecycle/health.ts +72 -0
- package/src/core/lifecycle/index.ts +4 -0
- package/src/core/lifecycle/namespace.ts +7 -0
- package/src/core/lifecycle/startup.ts +102 -0
- package/src/core/lifecycle/types.ts +36 -0
- package/src/core/logging/context.ts +60 -0
- package/src/core/logging/error-chain.ts +68 -0
- package/src/core/logging/index.ts +5 -0
- package/src/core/logging/logger.ts +65 -0
- package/src/core/logging/namespace.ts +16 -0
- package/src/core/logging/proxy.ts +22 -0
- package/src/core/logging/redact-match.ts +24 -0
- package/src/core/logging/types.ts +47 -0
- package/src/core/pipework.ts +566 -0
- package/src/core/runtime/broker.ts +69 -0
- package/src/core/surface/http.ts +133 -0
- package/src/core/surface/index.ts +11 -0
- package/src/core/surface/job-timeout.ts +40 -0
- package/src/core/surface/namespace.ts +13 -0
- package/src/core/surface/script.ts +33 -0
- package/src/core/surface/start.ts +142 -0
- package/src/core/surface/types.ts +225 -0
- package/src/core/surface/validate.ts +88 -0
- package/src/core/surface/worker.ts +528 -0
- package/src/core/validation/connectivity.ts +49 -0
- package/src/core/validation/domain.ts +99 -0
- package/src/core/validation/index.ts +5 -0
- package/src/core/validation/queue-tables.ts +312 -0
- package/src/core/validation/rls-role.ts +138 -0
- package/src/core/validation/startup.ts +51 -0
- package/src/core/validation/surfaces.ts +65 -0
- package/src/core/validation/types.ts +25 -0
- package/src/data/db/advisory-lock.ts +55 -0
- package/src/data/db/aggregates.ts +172 -0
- package/src/data/db/array-elements.ts +111 -0
- package/src/data/db/bulk-set.ts +53 -0
- package/src/data/db/col/index.ts +14 -0
- package/src/data/db/composed.ts +53 -0
- package/src/data/db/db.ts +276 -0
- package/src/data/db/excluded.ts +16 -0
- package/src/data/db/expressions.ts +473 -0
- package/src/data/db/filter.ts +90 -0
- package/src/data/db/function-source.ts +114 -0
- package/src/data/db/identifiers.ts +16 -0
- package/src/data/db/idx/index.ts +9 -0
- package/src/data/db/in-list.ts +49 -0
- package/src/data/db/index.ts +9 -0
- package/src/data/db/insert-split.ts +137 -0
- package/src/data/db/instrumentation.ts +82 -0
- package/src/data/db/maintenance.ts +28 -0
- package/src/data/db/namespace.ts +107 -0
- package/src/data/db/owner-labels.ts +9 -0
- package/src/data/db/pool.ts +187 -0
- package/src/data/db/query-label.ts +13 -0
- package/src/data/db/query-watch.ts +116 -0
- package/src/data/db/raw-client-warning.ts +37 -0
- package/src/data/db/readonly.ts +23 -0
- package/src/data/db/reservation.ts +151 -0
- package/src/data/db/schema-features.ts +14 -0
- package/src/data/db/serializable.ts +83 -0
- package/src/data/db/sql.ts +1 -0
- package/src/data/db/timeouts.ts +76 -0
- package/src/data/db/types.ts +18 -0
- package/src/data/db/unbound.ts +33 -0
- package/src/data/db/values.ts +29 -0
- package/src/data/domain/brand.ts +15 -0
- package/src/data/domain/build-factory.ts +193 -0
- package/src/data/domain/build-schema.ts +161 -0
- package/src/data/domain/build-table.ts +355 -0
- package/src/data/domain/define.ts +239 -0
- package/src/data/domain/external-registry.ts +34 -0
- package/src/data/domain/external.ts +77 -0
- package/src/data/domain/field.ts +279 -0
- package/src/data/domain/index.ts +13 -0
- package/src/data/domain/naming.ts +6 -0
- package/src/data/domain/projections.ts +57 -0
- package/src/data/domain/trace-safe-projection.ts +31 -0
- package/src/data/domain/traits.ts +108 -0
- package/src/data/domain/types.ts +289 -0
- package/src/data/jsonb/composed.ts +18 -0
- package/src/data/jsonb/index.ts +1 -0
- package/src/data/jsonb/namespace.ts +30 -0
- package/src/data/jsonb/query.ts +86 -0
- package/src/data/migrate/append-only-generate.ts +47 -0
- package/src/data/migrate/applied.ts +47 -0
- package/src/data/migrate/apply.ts +309 -0
- package/src/data/migrate/check.ts +119 -0
- package/src/data/migrate/diff.ts +357 -0
- package/src/data/migrate/door-generate.ts +130 -0
- package/src/data/migrate/framework-rls.ts +58 -0
- package/src/data/migrate/generate.ts +201 -0
- package/src/data/migrate/history.ts +215 -0
- package/src/data/migrate/index.ts +9 -0
- package/src/data/migrate/internal-definitions.ts +175 -0
- package/src/data/migrate/post-process.ts +73 -0
- package/src/data/migrate/pragma.ts +73 -0
- package/src/data/migrate/provision-framework.ts +147 -0
- package/src/data/migrate/rls-generate.ts +61 -0
- package/src/data/migrate/run.ts +124 -0
- package/src/data/migrate/safety.ts +167 -0
- package/src/data/migrate/snapshot.ts +368 -0
- package/src/data/migrate/sql-emit.ts +392 -0
- package/src/data/migrate/statements.ts +312 -0
- package/src/data/query/alias.ts +126 -0
- package/src/data/query/batch.ts +8 -0
- package/src/data/query/cache/core/cache.ts +78 -0
- package/src/data/query/cache/core/index.ts +1 -0
- package/src/data/query/cache/core/types.ts +29 -0
- package/src/data/query/cache/readme.md +230 -0
- package/src/data/query/casing.ts +76 -0
- package/src/data/query/collation.ts +11 -0
- package/src/data/query/column-builder.ts +370 -0
- package/src/data/query/column.ts +150 -0
- package/src/data/query/entity.ts +42 -0
- package/src/data/query/errors.ts +33 -0
- package/src/data/query/index.ts +14 -0
- package/src/data/query/logger.ts +47 -0
- package/src/data/query/operations.ts +45 -0
- package/src/data/query/pg-core/alias.ts +12 -0
- package/src/data/query/pg-core/checks.ts +32 -0
- package/src/data/query/pg-core/columns/all.ts +71 -0
- package/src/data/query/pg-core/columns/bigint.ts +110 -0
- package/src/data/query/pg-core/columns/bigserial.ts +128 -0
- package/src/data/query/pg-core/columns/boolean.ts +43 -0
- package/src/data/query/pg-core/columns/char.ts +85 -0
- package/src/data/query/pg-core/columns/cidr.ts +43 -0
- package/src/data/query/pg-core/columns/common.ts +366 -0
- package/src/data/query/pg-core/columns/custom.ts +232 -0
- package/src/data/query/pg-core/columns/date.common.ts +15 -0
- package/src/data/query/pg-core/columns/date.ts +112 -0
- package/src/data/query/pg-core/columns/double-precision.ts +55 -0
- package/src/data/query/pg-core/columns/enum.ts +201 -0
- package/src/data/query/pg-core/columns/index.ts +35 -0
- package/src/data/query/pg-core/columns/inet.ts +43 -0
- package/src/data/query/pg-core/columns/int.common.ts +57 -0
- package/src/data/query/pg-core/columns/integer.ts +53 -0
- package/src/data/query/pg-core/columns/interval.ts +83 -0
- package/src/data/query/pg-core/columns/json.ts +58 -0
- package/src/data/query/pg-core/columns/jsonb.ts +56 -0
- package/src/data/query/pg-core/columns/line.ts +117 -0
- package/src/data/query/pg-core/columns/macaddr.ts +43 -0
- package/src/data/query/pg-core/columns/macaddr8.ts +43 -0
- package/src/data/query/pg-core/columns/numeric.ts +227 -0
- package/src/data/query/pg-core/columns/point.ts +127 -0
- package/src/data/query/pg-core/columns/postgis_extension/geometry.ts +119 -0
- package/src/data/query/pg-core/columns/postgis_extension/utils.ts +47 -0
- package/src/data/query/pg-core/columns/real.ts +58 -0
- package/src/data/query/pg-core/columns/serial.ts +55 -0
- package/src/data/query/pg-core/columns/smallint.ts +53 -0
- package/src/data/query/pg-core/columns/smallserial.ts +60 -0
- package/src/data/query/pg-core/columns/text.ts +67 -0
- package/src/data/query/pg-core/columns/time.ts +72 -0
- package/src/data/query/pg-core/columns/timestamp.ts +163 -0
- package/src/data/query/pg-core/columns/uuid.ts +51 -0
- package/src/data/query/pg-core/columns/varchar.ts +89 -0
- package/src/data/query/pg-core/columns/vector_extension/bit.ts +68 -0
- package/src/data/query/pg-core/columns/vector_extension/halfvec.ts +80 -0
- package/src/data/query/pg-core/columns/vector_extension/sparsevec.ts +67 -0
- package/src/data/query/pg-core/columns/vector_extension/vector.ts +80 -0
- package/src/data/query/pg-core/db.ts +674 -0
- package/src/data/query/pg-core/dialect.ts +1404 -0
- package/src/data/query/pg-core/expressions.ts +25 -0
- package/src/data/query/pg-core/foreign-keys.ts +130 -0
- package/src/data/query/pg-core/index.ts +21 -0
- package/src/data/query/pg-core/indexes.ts +276 -0
- package/src/data/query/pg-core/policies.ts +56 -0
- package/src/data/query/pg-core/primary-keys.ts +62 -0
- package/src/data/query/pg-core/query-builders/count.ts +86 -0
- package/src/data/query/pg-core/query-builders/delete.ts +293 -0
- package/src/data/query/pg-core/query-builders/index.ts +7 -0
- package/src/data/query/pg-core/query-builders/insert.ts +452 -0
- package/src/data/query/pg-core/query-builders/query-builder.ts +123 -0
- package/src/data/query/pg-core/query-builders/query.ts +157 -0
- package/src/data/query/pg-core/query-builders/raw.ts +49 -0
- package/src/data/query/pg-core/query-builders/refresh-materialized-view.ts +108 -0
- package/src/data/query/pg-core/query-builders/select.ts +1346 -0
- package/src/data/query/pg-core/query-builders/select.types.ts +437 -0
- package/src/data/query/pg-core/query-builders/update.ts +626 -0
- package/src/data/query/pg-core/roles.ts +41 -0
- package/src/data/query/pg-core/schema.ts +72 -0
- package/src/data/query/pg-core/sequence.ts +41 -0
- package/src/data/query/pg-core/session.ts +292 -0
- package/src/data/query/pg-core/subquery.ts +46 -0
- package/src/data/query/pg-core/table.ts +252 -0
- package/src/data/query/pg-core/unique-constraint.ts +73 -0
- package/src/data/query/pg-core/utils/array.ts +95 -0
- package/src/data/query/pg-core/utils/index.ts +1 -0
- package/src/data/query/pg-core/utils.ts +104 -0
- package/src/data/query/pg-core/view-base.ts +14 -0
- package/src/data/query/pg-core/view-common.ts +1 -0
- package/src/data/query/pg-core/view.ts +435 -0
- package/src/data/query/pg-core/with-builder.ts +41 -0
- package/src/data/query/postgres-js/README.md +46 -0
- package/src/data/query/postgres-js/array-parser.ts +45 -0
- package/src/data/query/postgres-js/driver-error-boundary.ts +149 -0
- package/src/data/query/postgres-js/driver.ts +163 -0
- package/src/data/query/postgres-js/index.ts +2 -0
- package/src/data/query/postgres-js/session.ts +234 -0
- package/src/data/query/primary-key.ts +11 -0
- package/src/data/query/query-builders/query-builder.ts +19 -0
- package/src/data/query/query-builders/select.types.ts +175 -0
- package/src/data/query/query-promise.ts +35 -0
- package/src/data/query/relations.ts +725 -0
- package/src/data/query/runnable-query.ts +12 -0
- package/src/data/query/selection-proxy.ts +121 -0
- package/src/data/query/session.ts +8 -0
- package/src/data/query/sql/expressions/conditions.ts +741 -0
- package/src/data/query/sql/expressions/index.ts +2 -0
- package/src/data/query/sql/expressions/select.ts +45 -0
- package/src/data/query/sql/functions/aggregate.ts +129 -0
- package/src/data/query/sql/functions/index.ts +2 -0
- package/src/data/query/sql/functions/vector.ts +178 -0
- package/src/data/query/sql/index.ts +3 -0
- package/src/data/query/sql/sql.ts +794 -0
- package/src/data/query/subquery.ts +53 -0
- package/src/data/query/table.ts +208 -0
- package/src/data/query/table.utils.ts +2 -0
- package/src/data/query/tracing-utils.ts +3 -0
- package/src/data/query/tracing.ts +11 -0
- package/src/data/query/utils.ts +357 -0
- package/src/data/query/version.ts +4 -0
- package/src/data/query/view-common.ts +1 -0
- package/src/data/schema/branded.ts +13 -0
- package/src/data/schema/generated/coerce.ts +5 -0
- package/src/data/schema/generated/combinator.ts +6 -0
- package/src/data/schema/generated/encoding.ts +5 -0
- package/src/data/schema/generated/error.ts +6 -0
- package/src/data/schema/generated/format.ts +5 -0
- package/src/data/schema/generated/type-constructor.ts +10 -0
- package/src/data/schema/generated/type.ts +6 -0
- package/src/data/schema/index.ts +6 -0
- package/src/data/schema/json-schema.ts +33 -0
- package/src/data/schema/namespace.ts +55 -0
- package/src/data/schema/parse.ts +39 -0
- package/src/data/schema/types.ts +39 -0
- package/src/data/temporal/append-only.ts +134 -0
- package/src/data/temporal/close.ts +27 -0
- package/src/data/temporal/columns.ts +10 -0
- package/src/data/temporal/definition-queries.ts +70 -0
- package/src/data/temporal/errors.ts +10 -0
- package/src/data/temporal/get-current.ts +22 -0
- package/src/data/temporal/index.ts +9 -0
- package/src/data/temporal/namespace.ts +36 -0
- package/src/data/temporal/query.ts +25 -0
- package/src/data/temporal/resolve.ts +17 -0
- package/src/data/temporal/revise.ts +67 -0
- package/src/data/temporal/types.ts +22 -0
- package/src/data/valve/artifact.ts +33 -0
- package/src/data/valve/contract-diff.ts +21 -0
- package/src/data/valve/cross.ts +57 -0
- package/src/data/valve/crossing-ledger.ts +50 -0
- package/src/data/valve/decision.ts +44 -0
- package/src/data/valve/durable-crossing.ts +52 -0
- package/src/data/valve/execute-crossing.ts +77 -0
- package/src/data/valve/faucet.ts +56 -0
- package/src/data/valve/gate.ts +114 -0
- package/src/data/valve/graph.ts +77 -0
- package/src/data/valve/index.ts +53 -0
- package/src/data/valve/namespace.ts +57 -0
- package/src/data/valve/registry.ts +50 -0
- package/src/data/valve/schema/valve-crossing-fields.ts +23 -0
- package/src/data/valve/schema/valve-crossing.ts +9 -0
- package/src/data/valve/supply.ts +154 -0
- package/src/data/valve/types.ts +143 -0
- package/src/data/vector/columns.ts +27 -0
- package/src/data/vector/index.ts +4 -0
- package/src/data/vector/namespace.ts +33 -0
- package/src/data/vector/query.ts +85 -0
- package/src/data/vector/validate.ts +16 -0
- package/src/data/write/audit/actor.ts +15 -0
- package/src/data/write/audit/audit-columns.ts +18 -0
- package/src/data/write/audit/audit-select.ts +111 -0
- package/src/data/write/audit/bound-transaction.ts +14 -0
- package/src/data/write/audit/cte-compile.ts +32 -0
- package/src/data/write/audit/decode-returning.ts +47 -0
- package/src/data/write/audit/final-select.ts +43 -0
- package/src/data/write/audit/infra-audit.ts +36 -0
- package/src/data/write/audit/primary-key.ts +65 -0
- package/src/data/write/audit/projection.ts +41 -0
- package/src/data/write/audit/read-touches.ts +86 -0
- package/src/data/write/audit/touch-match.ts +78 -0
- package/src/data/write/audit/verb-delete.ts +62 -0
- package/src/data/write/audit/verb-insert.ts +36 -0
- package/src/data/write/audit/verb-select.ts +47 -0
- package/src/data/write/audit/verb-update.ts +60 -0
- package/src/data/write/audit/verb-upsert.ts +104 -0
- package/src/data/write/conflict.ts +43 -0
- package/src/data/write/delete.ts +38 -0
- package/src/data/write/execute.ts +243 -0
- package/src/data/write/index.ts +11 -0
- package/src/data/write/insert.ts +63 -0
- package/src/data/write/state.ts +43 -0
- package/src/data/write/update.ts +54 -0
- package/src/data/write/upsert.ts +58 -0
- package/src/data/write/values.ts +19 -0
- package/src/index.ts +230 -0
- package/src/infra/access-links/code.ts +70 -0
- package/src/infra/access-links/handle.ts +892 -0
- package/src/infra/access-links/index.ts +9 -0
- package/src/infra/access-links/namespace.ts +30 -0
- package/src/infra/access-links/person-check.ts +177 -0
- package/src/infra/access-links/schema.ts +71 -0
- package/src/infra/alerts/async-sources.ts +231 -0
- package/src/infra/alerts/audit.ts +36 -0
- package/src/infra/alerts/beat.ts +123 -0
- package/src/infra/alerts/client-faults.ts +111 -0
- package/src/infra/alerts/faults.ts +156 -0
- package/src/infra/alerts/handle.ts +778 -0
- package/src/infra/alerts/http.ts +192 -0
- package/src/infra/alerts/index.ts +12 -0
- package/src/infra/alerts/infra-sources.ts +180 -0
- package/src/infra/alerts/namespace.ts +81 -0
- package/src/infra/alerts/redact.ts +21 -0
- package/src/infra/alerts/request-faults.ts +41 -0
- package/src/infra/alerts/schema.ts +124 -0
- package/src/infra/alerts/sinks.ts +125 -0
- package/src/infra/alerts/source-options.ts +26 -0
- package/src/infra/alerts/sources.ts +503 -0
- package/src/infra/alerts/subsystem-sources.ts +137 -0
- package/src/infra/audit/emit.ts +87 -0
- package/src/infra/audit/index.ts +2 -0
- package/src/infra/audit/namespace.ts +22 -0
- package/src/infra/audit/schema.sql +35 -0
- package/src/infra/audit/types.ts +18 -0
- package/src/infra/aws/credentials.ts +147 -0
- package/src/infra/aws/sigv4.ts +140 -0
- package/src/infra/cache/create.ts +58 -0
- package/src/infra/cache/entry.ts +81 -0
- package/src/infra/cache/index.ts +4 -0
- package/src/infra/cache/namespace.ts +10 -0
- package/src/infra/cache/tenant.ts +93 -0
- package/src/infra/cache/types.ts +24 -0
- package/src/infra/crawl/audit.ts +35 -0
- package/src/infra/crawl/errors.ts +25 -0
- package/src/infra/crawl/handle.ts +693 -0
- package/src/infra/crawl/index.ts +9 -0
- package/src/infra/crawl/links.ts +160 -0
- package/src/infra/crawl/namespace.ts +36 -0
- package/src/infra/crawl/robots.ts +100 -0
- package/src/infra/crawl/schema.ts +89 -0
- package/src/infra/credit-line/handle.ts +883 -0
- package/src/infra/credit-line/index.ts +6 -0
- package/src/infra/credit-line/namespace.ts +7 -0
- package/src/infra/credit-line/schema.ts +96 -0
- package/src/infra/credits/handle.ts +706 -0
- package/src/infra/credits/index.ts +5 -0
- package/src/infra/credits/namespace.ts +7 -0
- package/src/infra/credits/schema.ts +83 -0
- package/src/infra/email/audit.ts +36 -0
- package/src/infra/email/inbound.ts +622 -0
- package/src/infra/email/index.ts +11 -0
- package/src/infra/email/mail.ts +517 -0
- package/src/infra/email/mime.ts +447 -0
- package/src/infra/email/namespace.ts +22 -0
- package/src/infra/email/providers.ts +111 -0
- package/src/infra/email/schema.ts +96 -0
- package/src/infra/email/sns.ts +200 -0
- package/src/infra/email/unsubscribe.ts +44 -0
- package/src/infra/fetch/address.ts +88 -0
- package/src/infra/fetch/connect-retry.ts +87 -0
- package/src/infra/fetch/handle.ts +329 -0
- package/src/infra/fetch/index.ts +7 -0
- package/src/infra/fetch/namespace.ts +70 -0
- package/src/infra/idempotency/index.ts +3 -0
- package/src/infra/idempotency/middleware.ts +87 -0
- package/src/infra/idempotency/store.ts +92 -0
- package/src/infra/idempotency/types.ts +30 -0
- package/src/infra/join-requests/handle.ts +312 -0
- package/src/infra/join-requests/index.ts +2 -0
- package/src/infra/join-requests/namespace.ts +7 -0
- package/src/infra/join-requests/schema.ts +33 -0
- package/src/infra/outbox/core.ts +165 -0
- package/src/infra/quota/errors.ts +32 -0
- package/src/infra/quota/handle.ts +215 -0
- package/src/infra/quota/index.ts +5 -0
- package/src/infra/quota/namespace.ts +7 -0
- package/src/infra/quota/schema.ts +15 -0
- package/src/infra/storage/backend.ts +34 -0
- package/src/infra/storage/handle.ts +513 -0
- package/src/infra/storage/index.ts +9 -0
- package/src/infra/storage/local.ts +104 -0
- package/src/infra/storage/namespace.ts +13 -0
- package/src/infra/storage/s3.ts +257 -0
- package/src/infra/storage/schema.ts +24 -0
- package/src/infra/support/handle.ts +854 -0
- package/src/infra/support/http.ts +229 -0
- package/src/infra/support/index.ts +7 -0
- package/src/infra/support/namespace.ts +12 -0
- package/src/infra/support/schema.ts +96 -0
- package/src/infra/webhook/inbound.ts +45 -0
- package/src/infra/webhook/index.ts +5 -0
- package/src/infra/webhook/namespace.ts +24 -0
- package/src/infra/webhook/outbound.ts +315 -0
- package/src/infra/webhook/sign.ts +32 -0
- package/src/infra/webhook/verify.ts +82 -0
- package/src/invariants/assert.ts +26 -0
- package/src/invariants/index.ts +1 -0
- package/src/lint/config.ts +56 -0
- package/src/lint/doctrine.ts +163 -0
- package/src/lint/include.ts +97 -0
- package/src/lint/index.ts +3 -0
- package/src/lint/preset.ts +10 -0
- package/src/lint/resolver.ts +218 -0
- package/src/lint/rules/no-reexports.ts +46 -0
- package/src/request/behavior/audited.ts +85 -0
- package/src/request/behavior/cached.ts +62 -0
- package/src/request/behavior/compose.ts +28 -0
- package/src/request/behavior/index.ts +5 -0
- package/src/request/behavior/namespace.ts +16 -0
- package/src/request/behavior/types.ts +26 -0
- package/src/request/behavior/versioned.ts +54 -0
- package/src/request/context/create.ts +103 -0
- package/src/request/context/guard.ts +49 -0
- package/src/request/context/index.ts +4 -0
- package/src/request/context/run-in-transaction.ts +200 -0
- package/src/request/context/store.ts +28 -0
- package/src/request/context/types.ts +50 -0
- package/src/request/di/builder.ts +535 -0
- package/src/request/di/index.ts +8 -0
- package/src/request/di/resolve.ts +271 -0
- package/src/request/di/types.ts +262 -0
- package/src/request/fitting/namespace.ts +7 -0
- package/src/request/fixture/batch.ts +71 -0
- package/src/request/fixture/builder.ts +26 -0
- package/src/request/fixture/errors.ts +10 -0
- package/src/request/fixture/index.ts +8 -0
- package/src/request/fixture/namespace.ts +23 -0
- package/src/request/fixture/paginate.ts +44 -0
- package/src/request/fixture/to-handlers.ts +260 -0
- package/src/request/fixture/types.ts +79 -0
- package/src/request/flow/act-as.ts +78 -0
- package/src/request/flow/namespace.ts +17 -0
- package/src/request/http/error-step.ts +42 -0
- package/src/request/http/file.ts +141 -0
- package/src/request/http/index.ts +4 -0
- package/src/request/http/middleware.ts +141 -0
- package/src/request/http/namespace.ts +5 -0
- package/src/request/http/rate-limit-classes.ts +170 -0
- package/src/request/http/response.ts +82 -0
- package/src/request/http/server.ts +916 -0
- package/src/request/http/sniff.ts +261 -0
- package/src/request/http/types.ts +250 -0
- package/src/request/http/upload.ts +284 -0
- package/src/request/internal/text.ts +6 -0
- package/src/request/openapi/generate.ts +205 -0
- package/src/request/openapi/index.ts +2 -0
- package/src/request/openapi/namespace.ts +7 -0
- package/src/test/auth.ts +13 -0
- package/src/test/auto-setup.ts +45 -0
- package/src/test/context.ts +91 -0
- package/src/test/crawl-fixture.ts +157 -0
- package/src/test/discover-fork.ts +17 -0
- package/src/test/fingerprint.ts +135 -0
- package/src/test/globals.d.ts +7 -0
- package/src/test/index.ts +19 -0
- package/src/test/namespace.ts +87 -0
- package/src/test/plugin.ts +189 -0
- package/src/test/progress.ts +185 -0
- package/src/test/reap-after-run.ts +28 -0
- package/src/test/reap.ts +286 -0
- package/src/test/reset.ts +253 -0
- package/src/test/savepoints.ts +172 -0
- package/src/test/setup.ts +1422 -0
- package/src/test/system-channel.ts +50 -0
- package/src/test/vitest-plugin.ts +142 -0
- package/src/test/vitest-workspace.ts +507 -0
- package/src/test/vitest.ts +333 -0
- package/src/test/watch.ts +105 -0
- package/src/trace/capture/bounded-serializer.ts +146 -0
- package/src/trace/cardinality/analyze.ts +173 -0
- package/src/trace/cardinality/branch-context.ts +214 -0
- package/src/trace/cardinality/check.ts +33 -0
- package/src/trace/cardinality/classify-edge.ts +64 -0
- package/src/trace/cardinality/structural-max.ts +107 -0
- package/src/trace/check/coverage-check.ts +188 -0
- package/src/trace/check/flow-check.ts +103 -0
- package/src/trace/check/flow-step-site.ts +234 -0
- package/src/trace/check/io-pattern.ts +116 -0
- package/src/trace/codemod/add-cardinality.ts +152 -0
- package/src/trace/codemod/run.ts +80 -0
- package/src/trace/entry/child-trace.ts +21 -0
- package/src/trace/entry/close-trace.ts +87 -0
- package/src/trace/entry/finalize-trace.ts +28 -0
- package/src/trace/entry/open-trace.ts +138 -0
- package/src/trace/entry/parent-trace.ts +20 -0
- package/src/trace/entry/parse-traceparent.ts +39 -0
- package/src/trace/entry/process-start.ts +38 -0
- package/src/trace/entry/trace-context.ts +26 -0
- package/src/trace/entry/tracing-enabled.ts +10 -0
- package/src/trace/external/record.ts +195 -0
- package/src/trace/external/report.ts +66 -0
- package/src/trace/namespace.ts +19 -0
- package/src/trace/partition/day.ts +47 -0
- package/src/trace/partition/index.ts +14 -0
- package/src/trace/partition/partition-name.ts +23 -0
- package/src/trace/partition/plan.ts +82 -0
- package/src/trace/partition/schedule.ts +26 -0
- package/src/trace/partition/startup-hook.ts +39 -0
- package/src/trace/partition/sync.ts +154 -0
- package/src/trace/partition/tables.ts +53 -0
- package/src/trace/read/tree.ts +83 -0
- package/src/trace/retain/copy-on-error.ts +76 -0
- package/src/trace/runtime/expire-stale-traces.ts +54 -0
- package/src/trace/runtime/flow-step.ts +147 -0
- package/src/trace/runtime/flush-steps.ts +31 -0
- package/src/trace/runtime/pending-writes.ts +54 -0
- package/src/trace/runtime/step-buffer.ts +298 -0
- package/src/trace/runtime/step-error.ts +21 -0
- package/src/trace/runtime/step-meta.ts +55 -0
- package/src/trace/runtime/thenable.ts +12 -0
- package/src/trace/runtime/truncate-trace.ts +62 -0
- package/src/trace/schema/trace-fields.ts +52 -0
- package/src/trace/schema/trace-retained.ts +22 -0
- package/src/trace/schema/trace-step-fields.ts +44 -0
- package/src/trace/schema/trace-step-retained.ts +25 -0
- package/src/trace/schema/trace-step.ts +18 -0
- package/src/trace/schema/trace.ts +12 -0
- package/src/trace/transformer/apply.ts +79 -0
- package/src/trace/transformer/build-meta-literal.ts +30 -0
- package/src/trace/transformer/find-flow-step-sites.ts +85 -0
- package/src/trace/transformer/inject-flow-step-import.ts +39 -0
- package/src/trace/transformer/transform-error.ts +14 -0
- package/src/trace/transformer/transform-flow-steps.ts +123 -0
- package/src/trace/transformer/wrap-function-declaration.ts +62 -0
- package/src/trace/transformer/wrap-variable-declaration.ts +67 -0
- package/src/workspace/affected.ts +110 -0
- package/src/workspace/changed-files.ts +163 -0
- package/src/workspace/check-deps.ts +213 -0
- package/src/workspace/checksum.ts +20 -0
- package/src/workspace/dependency-graph.ts +67 -0
- package/src/workspace/detect-pipework-copies.ts +93 -0
- package/src/workspace/discover.ts +206 -0
- package/src/workspace/generate.ts +401 -0
- package/src/workspace/index.ts +7 -0
- package/src/workspace/module-imports-pipework.ts +39 -0
- package/src/workspace/module-package-name.ts +12 -0
- package/src/workspace/scrub-git-env.ts +23 -0
- package/src/workspace/source-paths.ts +36 -0
- package/src/workspace/sync.ts +182 -0
- package/dist/REFERENCE.md +0 -1477
- package/dist/infra/access-links/rate-limit.d.ts +0 -10
- package/dist/infra/access-links/rate-limit.d.ts.map +0 -1
- package/dist/infra/access-links/rate-limit.js +0 -28
- package/dist/infra/access-links/rate-limit.js.map +0 -1
- package/dist/infra/email/sigv4.d.ts +0 -24
- package/dist/infra/email/sigv4.d.ts.map +0 -1
- package/dist/infra/email/sigv4.js +0 -55
- package/dist/infra/email/sigv4.js.map +0 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ColumnBuilderBaseConfig,
|
|
3
|
+
ColumnBuilderRuntimeConfig,
|
|
4
|
+
ColumnDataType,
|
|
5
|
+
GeneratedColumnConfig,
|
|
6
|
+
GeneratedIdentityConfig,
|
|
7
|
+
} from './column-builder.js';
|
|
8
|
+
import { entityKind } from './entity.js';
|
|
9
|
+
import type { DriverValueMapper, SQL, SQLWrapper } from './sql/sql.js';
|
|
10
|
+
import type { Table } from './table.js';
|
|
11
|
+
import type { Update } from './utils.js';
|
|
12
|
+
|
|
13
|
+
export interface ColumnBaseConfig<
|
|
14
|
+
TDataType extends ColumnDataType,
|
|
15
|
+
TColumnType extends string,
|
|
16
|
+
> extends ColumnBuilderBaseConfig<TDataType, TColumnType> {
|
|
17
|
+
tableName: string;
|
|
18
|
+
notNull: boolean;
|
|
19
|
+
hasDefault: boolean;
|
|
20
|
+
isPrimaryKey: boolean;
|
|
21
|
+
isAutoincrement: boolean;
|
|
22
|
+
hasRuntimeDefault: boolean;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type ColumnTypeConfig<T extends ColumnBaseConfig<ColumnDataType, string>, TTypeConfig extends object> = T & {
|
|
26
|
+
brand: 'Column';
|
|
27
|
+
tableName: T['tableName'];
|
|
28
|
+
name: T['name'];
|
|
29
|
+
dataType: T['dataType'];
|
|
30
|
+
columnType: T['columnType'];
|
|
31
|
+
data: T['data'];
|
|
32
|
+
driverParam: T['driverParam'];
|
|
33
|
+
notNull: T['notNull'];
|
|
34
|
+
hasDefault: T['hasDefault'];
|
|
35
|
+
isPrimaryKey: T['isPrimaryKey'];
|
|
36
|
+
isAutoincrement: T['isAutoincrement'];
|
|
37
|
+
hasRuntimeDefault: T['hasRuntimeDefault'];
|
|
38
|
+
enumValues: T['enumValues'];
|
|
39
|
+
baseColumn: T extends { baseColumn: infer U } ? U : unknown;
|
|
40
|
+
generated: GeneratedColumnConfig<T['data']> | undefined;
|
|
41
|
+
identity: undefined | 'always' | 'byDefault';
|
|
42
|
+
} & TTypeConfig;
|
|
43
|
+
|
|
44
|
+
export type ColumnRuntimeConfig<TData, TRuntimeConfig extends object> = ColumnBuilderRuntimeConfig<
|
|
45
|
+
TData,
|
|
46
|
+
TRuntimeConfig
|
|
47
|
+
>;
|
|
48
|
+
|
|
49
|
+
export interface Column<
|
|
50
|
+
T extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
52
|
+
TRuntimeConfig extends object = object,
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
54
|
+
TTypeConfig extends object = object,
|
|
55
|
+
> extends DriverValueMapper<T['data'], T['driverParam']>, SQLWrapper {
|
|
56
|
+
// SQLWrapper runtime implementation is defined in 'sql/sql.ts'
|
|
57
|
+
}
|
|
58
|
+
/*
|
|
59
|
+
`Column` only accepts a full `ColumnConfig` as its generic.
|
|
60
|
+
To infer parts of the config, use `AnyColumn` that accepts a partial config.
|
|
61
|
+
See `GetColumnData` for example usage of inferring.
|
|
62
|
+
*/
|
|
63
|
+
export abstract class Column<
|
|
64
|
+
T extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,
|
|
65
|
+
TRuntimeConfig extends object = object,
|
|
66
|
+
TTypeConfig extends object = object,
|
|
67
|
+
> implements DriverValueMapper<T['data'], T['driverParam']>, SQLWrapper {
|
|
68
|
+
static readonly [entityKind]: string = 'Column';
|
|
69
|
+
|
|
70
|
+
declare readonly _: ColumnTypeConfig<T, TTypeConfig>;
|
|
71
|
+
|
|
72
|
+
readonly name: string;
|
|
73
|
+
readonly keyAsName: boolean;
|
|
74
|
+
readonly primary: boolean;
|
|
75
|
+
readonly notNull: boolean;
|
|
76
|
+
readonly default: T['data'] | SQL | undefined;
|
|
77
|
+
readonly defaultFn: (() => T['data'] | SQL) | undefined;
|
|
78
|
+
readonly onUpdateFn: (() => T['data'] | SQL) | undefined;
|
|
79
|
+
readonly hasDefault: boolean;
|
|
80
|
+
readonly isUnique: boolean;
|
|
81
|
+
readonly uniqueName: string | undefined;
|
|
82
|
+
readonly uniqueType: string | undefined;
|
|
83
|
+
readonly dataType: T['dataType'];
|
|
84
|
+
readonly columnType: T['columnType'];
|
|
85
|
+
readonly enumValues: T['enumValues'] = undefined;
|
|
86
|
+
readonly generated: GeneratedColumnConfig<T['data']> | undefined = undefined;
|
|
87
|
+
readonly generatedIdentity: GeneratedIdentityConfig | undefined = undefined;
|
|
88
|
+
readonly collation: string | undefined = undefined;
|
|
89
|
+
|
|
90
|
+
protected config: ColumnRuntimeConfig<T['data'], TRuntimeConfig>;
|
|
91
|
+
|
|
92
|
+
constructor(
|
|
93
|
+
readonly table: Table,
|
|
94
|
+
config: ColumnRuntimeConfig<T['data'], TRuntimeConfig>,
|
|
95
|
+
) {
|
|
96
|
+
this.config = config;
|
|
97
|
+
this.name = config.name;
|
|
98
|
+
this.keyAsName = config.keyAsName;
|
|
99
|
+
this.notNull = config.notNull;
|
|
100
|
+
this.default = config.default;
|
|
101
|
+
this.defaultFn = config.defaultFn;
|
|
102
|
+
this.onUpdateFn = config.onUpdateFn;
|
|
103
|
+
this.hasDefault = config.hasDefault;
|
|
104
|
+
this.primary = config.primaryKey;
|
|
105
|
+
this.isUnique = config.isUnique;
|
|
106
|
+
this.uniqueName = config.uniqueName;
|
|
107
|
+
this.uniqueType = config.uniqueType;
|
|
108
|
+
this.dataType = config.dataType as T['dataType'];
|
|
109
|
+
this.columnType = config.columnType;
|
|
110
|
+
this.generated = config.generated;
|
|
111
|
+
this.generatedIdentity = config.generatedIdentity;
|
|
112
|
+
this.collation = config.collation;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
abstract getSQLType(): string;
|
|
116
|
+
|
|
117
|
+
mapFromDriverValue(value: unknown): unknown {
|
|
118
|
+
return value;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
mapToDriverValue(value: unknown): unknown {
|
|
122
|
+
return value;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ** @internal */
|
|
126
|
+
shouldDisableInsert(): boolean {
|
|
127
|
+
return this.config.generated !== undefined && this.config.generated.type !== 'byDefault';
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export type UpdateColConfig<
|
|
132
|
+
T extends ColumnBaseConfig<ColumnDataType, string>,
|
|
133
|
+
TUpdate extends Partial<ColumnBaseConfig<ColumnDataType, string>>,
|
|
134
|
+
> = Update<T, TUpdate>;
|
|
135
|
+
|
|
136
|
+
export type AnyColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = Column<
|
|
137
|
+
Required<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>
|
|
138
|
+
>;
|
|
139
|
+
|
|
140
|
+
export type GetColumnData<TColumn extends Column, TInferMode extends 'query' | 'raw' = 'query'> =
|
|
141
|
+
// dprint-ignore
|
|
142
|
+
TInferMode extends 'raw' // Raw mode
|
|
143
|
+
? TColumn['_']['data'] // Just return the underlying type
|
|
144
|
+
: TColumn['_']['notNull'] extends true // Query mode
|
|
145
|
+
? TColumn['_']['data'] // Query mode, not null
|
|
146
|
+
: TColumn['_']['data'] | null; // Query mode, nullable
|
|
147
|
+
|
|
148
|
+
export type InferColumnsDataTypes<TColumns extends Record<string, Column>> = {
|
|
149
|
+
[Key in keyof TColumns]: GetColumnData<TColumns[Key], 'query'>;
|
|
150
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export const entityKind = Symbol.for('drizzle:entityKind');
|
|
2
|
+
export const hasOwnEntityKind = Symbol.for('drizzle:hasOwnEntityKind');
|
|
3
|
+
|
|
4
|
+
export interface DrizzleEntity {
|
|
5
|
+
[entityKind]: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export type DrizzleEntityClass<T> =
|
|
9
|
+
& ((abstract new(...args: any[]) => T) | (new(...args: any[]) => T))
|
|
10
|
+
& DrizzleEntity;
|
|
11
|
+
|
|
12
|
+
export function is<T extends DrizzleEntityClass<any>>(value: any, type: T): value is InstanceType<T> {
|
|
13
|
+
if (!value || typeof value !== 'object') {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (value instanceof type) { // eslint-disable-line no-instanceof/no-instanceof
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (!Object.prototype.hasOwnProperty.call(type, entityKind)) {
|
|
22
|
+
throw new Error(
|
|
23
|
+
`Class "${
|
|
24
|
+
type.name ?? '<unknown>'
|
|
25
|
+
}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`,
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
let cls = Object.getPrototypeOf(value).constructor;
|
|
30
|
+
if (cls) {
|
|
31
|
+
// Traverse the prototype chain to find the entityKind
|
|
32
|
+
while (cls) {
|
|
33
|
+
if (entityKind in cls && cls[entityKind] === type[entityKind]) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
cls = Object.getPrototypeOf(cls);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { entityKind } from './entity.js';
|
|
2
|
+
|
|
3
|
+
export class DrizzleError extends Error {
|
|
4
|
+
static readonly [entityKind]: string = 'DrizzleError';
|
|
5
|
+
|
|
6
|
+
constructor({ message, cause }: { message?: string; cause?: unknown }) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = 'DrizzleError';
|
|
9
|
+
this.cause = cause;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class DrizzleQueryError extends Error {
|
|
14
|
+
constructor(
|
|
15
|
+
public query: string,
|
|
16
|
+
public params: any[],
|
|
17
|
+
public override cause?: Error,
|
|
18
|
+
) {
|
|
19
|
+
super(`Failed query: ${query}\nparams: ${params}`);
|
|
20
|
+
Error.captureStackTrace(this, DrizzleQueryError);
|
|
21
|
+
|
|
22
|
+
// ES2022+: preserves original error on `.cause`
|
|
23
|
+
if (cause) (this as any).cause = cause;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export class TransactionRollbackError extends DrizzleError {
|
|
28
|
+
static override readonly [entityKind]: string = 'TransactionRollbackError';
|
|
29
|
+
|
|
30
|
+
constructor() {
|
|
31
|
+
super({ message: 'Rollback' });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './alias.js';
|
|
2
|
+
export * from './column-builder.js';
|
|
3
|
+
export * from './column.js';
|
|
4
|
+
export * from './entity.js';
|
|
5
|
+
export * from './errors.js';
|
|
6
|
+
export * from './logger.js';
|
|
7
|
+
export * from './operations.js';
|
|
8
|
+
export * from './query-promise.js';
|
|
9
|
+
export * from './relations.js';
|
|
10
|
+
export * from './sql/index.js';
|
|
11
|
+
export * from './subquery.js';
|
|
12
|
+
export * from './table.js';
|
|
13
|
+
export * from './utils.js';
|
|
14
|
+
export * from './view-common.js';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { entityKind } from './entity.js';
|
|
2
|
+
|
|
3
|
+
export interface Logger {
|
|
4
|
+
logQuery(query: string, params: unknown[]): void;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface LogWriter {
|
|
8
|
+
write(message: string): void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export class ConsoleLogWriter implements LogWriter {
|
|
12
|
+
static readonly [entityKind]: string = 'ConsoleLogWriter';
|
|
13
|
+
|
|
14
|
+
write(message: string) {
|
|
15
|
+
console.log(message);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export class DefaultLogger implements Logger {
|
|
20
|
+
static readonly [entityKind]: string = 'DefaultLogger';
|
|
21
|
+
|
|
22
|
+
readonly writer: LogWriter;
|
|
23
|
+
|
|
24
|
+
constructor(config?: { writer: LogWriter }) {
|
|
25
|
+
this.writer = config?.writer ?? new ConsoleLogWriter();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
logQuery(query: string, params: unknown[]): void {
|
|
29
|
+
const stringifiedParams = params.map((p) => {
|
|
30
|
+
try {
|
|
31
|
+
return JSON.stringify(p);
|
|
32
|
+
} catch {
|
|
33
|
+
return String(p);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const paramsStr = stringifiedParams.length ? ` -- params: [${stringifiedParams.join(', ')}]` : '';
|
|
37
|
+
this.writer.write(`Query: ${query}${paramsStr}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export class NoopLogger implements Logger {
|
|
42
|
+
static readonly [entityKind]: string = 'NoopLogger';
|
|
43
|
+
|
|
44
|
+
logQuery(): void {
|
|
45
|
+
// noop
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { AnyColumn, Column } from './column.js';
|
|
2
|
+
import type { SQL } from './sql/sql.js';
|
|
3
|
+
import type { Subquery } from './subquery.js';
|
|
4
|
+
import type { Table } from './table.js';
|
|
5
|
+
|
|
6
|
+
export type RequiredKeyOnly<TKey extends string, T extends Column> = T extends AnyColumn<{
|
|
7
|
+
notNull: true;
|
|
8
|
+
hasDefault: false;
|
|
9
|
+
}> ? TKey
|
|
10
|
+
: never;
|
|
11
|
+
|
|
12
|
+
export type OptionalKeyOnly<TKey extends string, T extends Column, OverrideT extends boolean | undefined = false> =
|
|
13
|
+
TKey extends RequiredKeyOnly<TKey, T> ? never : T extends {
|
|
14
|
+
_: {
|
|
15
|
+
generated: undefined;
|
|
16
|
+
};
|
|
17
|
+
} ? (T extends {
|
|
18
|
+
_: {
|
|
19
|
+
identity: undefined;
|
|
20
|
+
};
|
|
21
|
+
} ? TKey
|
|
22
|
+
: T['_']['identity'] extends 'always' ? OverrideT extends true ? TKey : never
|
|
23
|
+
: TKey)
|
|
24
|
+
: never;
|
|
25
|
+
|
|
26
|
+
// TODO: SQL -> SQLWrapper
|
|
27
|
+
export type SelectedFieldsFlat<TColumn extends Column> = Record<
|
|
28
|
+
string,
|
|
29
|
+
TColumn | SQL | SQL.Aliased | Subquery
|
|
30
|
+
>;
|
|
31
|
+
|
|
32
|
+
export type SelectedFieldsFlatFull<TColumn extends Column> = Record<
|
|
33
|
+
string,
|
|
34
|
+
TColumn | SQL | SQL.Aliased
|
|
35
|
+
>;
|
|
36
|
+
|
|
37
|
+
export type SelectedFields<TColumn extends Column, TTable extends Table> = Record<
|
|
38
|
+
string,
|
|
39
|
+
SelectedFieldsFlat<TColumn>[string] | TTable | SelectedFieldsFlat<TColumn>
|
|
40
|
+
>;
|
|
41
|
+
|
|
42
|
+
export type SelectedFieldsOrdered<TColumn extends Column> = {
|
|
43
|
+
path: string[];
|
|
44
|
+
field: TColumn | SQL | SQL.Aliased | Subquery;
|
|
45
|
+
}[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TableAliasProxyHandler } from '../alias.js';
|
|
2
|
+
import type { BuildAliasTable } from './query-builders/select.types.js';
|
|
3
|
+
|
|
4
|
+
import type { PgTable } from './table.js';
|
|
5
|
+
import type { PgViewBase } from './view-base.js';
|
|
6
|
+
|
|
7
|
+
export function alias<TTable extends PgTable | PgViewBase, TAlias extends string>(
|
|
8
|
+
table: TTable,
|
|
9
|
+
alias: TAlias,
|
|
10
|
+
): BuildAliasTable<TTable, TAlias> {
|
|
11
|
+
return new Proxy(table, new TableAliasProxyHandler(alias, false)) as any;
|
|
12
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { entityKind } from '../entity.js';
|
|
2
|
+
import type { SQL } from '../sql/index.js';
|
|
3
|
+
import type { PgTable } from './table.js';
|
|
4
|
+
|
|
5
|
+
export class CheckBuilder {
|
|
6
|
+
static readonly [entityKind]: string = 'PgCheckBuilder';
|
|
7
|
+
|
|
8
|
+
protected brand!: 'PgConstraintBuilder';
|
|
9
|
+
|
|
10
|
+
constructor(public name: string, public value: SQL) {}
|
|
11
|
+
|
|
12
|
+
/** @internal */
|
|
13
|
+
build(table: PgTable): Check {
|
|
14
|
+
return new Check(table, this);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export class Check {
|
|
19
|
+
static readonly [entityKind]: string = 'PgCheck';
|
|
20
|
+
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly value: SQL;
|
|
23
|
+
|
|
24
|
+
constructor(public table: PgTable, builder: CheckBuilder) {
|
|
25
|
+
this.name = builder.name;
|
|
26
|
+
this.value = builder.value;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function check(name: string, value: SQL): CheckBuilder {
|
|
31
|
+
return new CheckBuilder(name, value);
|
|
32
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { bigint } from './bigint.js';
|
|
2
|
+
import { bigserial } from './bigserial.js';
|
|
3
|
+
import { boolean } from './boolean.js';
|
|
4
|
+
import { char } from './char.js';
|
|
5
|
+
import { cidr } from './cidr.js';
|
|
6
|
+
import { customType } from './custom.js';
|
|
7
|
+
import { date } from './date.js';
|
|
8
|
+
import { doublePrecision } from './double-precision.js';
|
|
9
|
+
import { inet } from './inet.js';
|
|
10
|
+
import { integer } from './integer.js';
|
|
11
|
+
import { interval } from './interval.js';
|
|
12
|
+
import { json } from './json.js';
|
|
13
|
+
import { jsonb } from './jsonb.js';
|
|
14
|
+
import { line } from './line.js';
|
|
15
|
+
import { macaddr } from './macaddr.js';
|
|
16
|
+
import { macaddr8 } from './macaddr8.js';
|
|
17
|
+
import { numeric } from './numeric.js';
|
|
18
|
+
import { point } from './point.js';
|
|
19
|
+
import { geometry } from './postgis_extension/geometry.js';
|
|
20
|
+
import { real } from './real.js';
|
|
21
|
+
import { serial } from './serial.js';
|
|
22
|
+
import { smallint } from './smallint.js';
|
|
23
|
+
import { smallserial } from './smallserial.js';
|
|
24
|
+
import { text } from './text.js';
|
|
25
|
+
import { time } from './time.js';
|
|
26
|
+
import { timestamp } from './timestamp.js';
|
|
27
|
+
import { uuid } from './uuid.js';
|
|
28
|
+
import { varchar } from './varchar.js';
|
|
29
|
+
import { bit } from './vector_extension/bit.js';
|
|
30
|
+
import { halfvec } from './vector_extension/halfvec.js';
|
|
31
|
+
import { sparsevec } from './vector_extension/sparsevec.js';
|
|
32
|
+
import { vector } from './vector_extension/vector.js';
|
|
33
|
+
|
|
34
|
+
export function getPgColumnBuilders() {
|
|
35
|
+
return {
|
|
36
|
+
bigint,
|
|
37
|
+
bigserial,
|
|
38
|
+
boolean,
|
|
39
|
+
char,
|
|
40
|
+
cidr,
|
|
41
|
+
customType,
|
|
42
|
+
date,
|
|
43
|
+
doublePrecision,
|
|
44
|
+
inet,
|
|
45
|
+
integer,
|
|
46
|
+
interval,
|
|
47
|
+
json,
|
|
48
|
+
jsonb,
|
|
49
|
+
line,
|
|
50
|
+
macaddr,
|
|
51
|
+
macaddr8,
|
|
52
|
+
numeric,
|
|
53
|
+
point,
|
|
54
|
+
geometry,
|
|
55
|
+
real,
|
|
56
|
+
serial,
|
|
57
|
+
smallint,
|
|
58
|
+
smallserial,
|
|
59
|
+
text,
|
|
60
|
+
time,
|
|
61
|
+
timestamp,
|
|
62
|
+
uuid,
|
|
63
|
+
varchar,
|
|
64
|
+
bit,
|
|
65
|
+
halfvec,
|
|
66
|
+
sparsevec,
|
|
67
|
+
vector,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type PgColumnsBuilders = ReturnType<typeof getPgColumnBuilders>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '../../column-builder.js';
|
|
2
|
+
import type { ColumnBaseConfig } from '../../column.js';
|
|
3
|
+
import { entityKind } from '../../entity.js';
|
|
4
|
+
import type { AnyPgTable } from '../table.js';
|
|
5
|
+
|
|
6
|
+
import { getColumnNameAndConfig } from '../../utils.js';
|
|
7
|
+
import { PgColumn } from './common.js';
|
|
8
|
+
import { PgIntColumnBaseBuilder } from './int.common.js';
|
|
9
|
+
|
|
10
|
+
export type PgBigInt53BuilderInitial<TName extends string> = PgBigInt53Builder<{
|
|
11
|
+
name: TName;
|
|
12
|
+
dataType: 'number';
|
|
13
|
+
columnType: 'PgBigInt53';
|
|
14
|
+
data: number;
|
|
15
|
+
driverParam: number | string;
|
|
16
|
+
enumValues: undefined;
|
|
17
|
+
}>;
|
|
18
|
+
|
|
19
|
+
export class PgBigInt53Builder<T extends ColumnBuilderBaseConfig<'number', 'PgBigInt53'>>
|
|
20
|
+
extends PgIntColumnBaseBuilder<T>
|
|
21
|
+
{
|
|
22
|
+
static override readonly [entityKind]: string = 'PgBigInt53Builder';
|
|
23
|
+
|
|
24
|
+
constructor(name: T['name']) {
|
|
25
|
+
super(name, 'number', 'PgBigInt53');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** @internal */
|
|
29
|
+
override build<TTableName extends string>(
|
|
30
|
+
table: AnyPgTable<{ name: TTableName }>,
|
|
31
|
+
): PgBigInt53<MakeColumnConfig<T, TTableName>> {
|
|
32
|
+
return new PgBigInt53<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export class PgBigInt53<T extends ColumnBaseConfig<'number', 'PgBigInt53'>> extends PgColumn<T> {
|
|
37
|
+
static override readonly [entityKind]: string = 'PgBigInt53';
|
|
38
|
+
|
|
39
|
+
getSQLType(): string {
|
|
40
|
+
return 'bigint';
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
override mapFromDriverValue(value: number | string): number {
|
|
44
|
+
if (typeof value === 'number') {
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
return Number(value);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export type PgBigInt64BuilderInitial<TName extends string> = PgBigInt64Builder<{
|
|
52
|
+
name: TName;
|
|
53
|
+
dataType: 'bigint';
|
|
54
|
+
columnType: 'PgBigInt64';
|
|
55
|
+
data: bigint;
|
|
56
|
+
driverParam: string;
|
|
57
|
+
enumValues: undefined;
|
|
58
|
+
}>;
|
|
59
|
+
|
|
60
|
+
export class PgBigInt64Builder<T extends ColumnBuilderBaseConfig<'bigint', 'PgBigInt64'>>
|
|
61
|
+
extends PgIntColumnBaseBuilder<T>
|
|
62
|
+
{
|
|
63
|
+
static override readonly [entityKind]: string = 'PgBigInt64Builder';
|
|
64
|
+
|
|
65
|
+
constructor(name: T['name']) {
|
|
66
|
+
super(name, 'bigint', 'PgBigInt64');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** @internal */
|
|
70
|
+
override build<TTableName extends string>(
|
|
71
|
+
table: AnyPgTable<{ name: TTableName }>,
|
|
72
|
+
): PgBigInt64<MakeColumnConfig<T, TTableName>> {
|
|
73
|
+
return new PgBigInt64<MakeColumnConfig<T, TTableName>>(
|
|
74
|
+
table,
|
|
75
|
+
this.config as ColumnBuilderRuntimeConfig<any, any>,
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export class PgBigInt64<T extends ColumnBaseConfig<'bigint', 'PgBigInt64'>> extends PgColumn<T> {
|
|
81
|
+
static override readonly [entityKind]: string = 'PgBigInt64';
|
|
82
|
+
|
|
83
|
+
getSQLType(): string {
|
|
84
|
+
return 'bigint';
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// eslint-disable-next-line unicorn/prefer-native-coercion-functions
|
|
88
|
+
override mapFromDriverValue(value: string): bigint {
|
|
89
|
+
return BigInt(value);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface PgBigIntConfig<T extends 'number' | 'bigint' = 'number' | 'bigint'> {
|
|
94
|
+
mode: T;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export function bigint<TMode extends PgBigIntConfig['mode']>(
|
|
98
|
+
config: PgBigIntConfig<TMode>,
|
|
99
|
+
): TMode extends 'number' ? PgBigInt53BuilderInitial<''> : PgBigInt64BuilderInitial<''>;
|
|
100
|
+
export function bigint<TName extends string, TMode extends PgBigIntConfig['mode']>(
|
|
101
|
+
name: TName,
|
|
102
|
+
config: PgBigIntConfig<TMode>,
|
|
103
|
+
): TMode extends 'number' ? PgBigInt53BuilderInitial<TName> : PgBigInt64BuilderInitial<TName>;
|
|
104
|
+
export function bigint(a: string | PgBigIntConfig, b?: PgBigIntConfig) {
|
|
105
|
+
const { name, config } = getColumnNameAndConfig<PgBigIntConfig>(a, b);
|
|
106
|
+
if (config.mode === 'number') {
|
|
107
|
+
return new PgBigInt53Builder(name);
|
|
108
|
+
}
|
|
109
|
+
return new PgBigInt64Builder(name);
|
|
110
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ColumnBuilderBaseConfig,
|
|
3
|
+
ColumnBuilderRuntimeConfig,
|
|
4
|
+
HasDefault,
|
|
5
|
+
MakeColumnConfig,
|
|
6
|
+
NotNull,
|
|
7
|
+
} from '../../column-builder.js';
|
|
8
|
+
import type { ColumnBaseConfig } from '../../column.js';
|
|
9
|
+
import { entityKind } from '../../entity.js';
|
|
10
|
+
import { getColumnNameAndConfig } from '../../utils.js';
|
|
11
|
+
import type { AnyPgTable } from '../table.js';
|
|
12
|
+
import { PgColumn, PgColumnBuilder } from './common.js';
|
|
13
|
+
|
|
14
|
+
export type PgBigSerial53BuilderInitial<TName extends string> = NotNull<
|
|
15
|
+
HasDefault<
|
|
16
|
+
PgBigSerial53Builder<{
|
|
17
|
+
name: TName;
|
|
18
|
+
dataType: 'number';
|
|
19
|
+
columnType: 'PgBigSerial53';
|
|
20
|
+
data: number;
|
|
21
|
+
driverParam: number;
|
|
22
|
+
enumValues: undefined;
|
|
23
|
+
}>
|
|
24
|
+
>
|
|
25
|
+
>;
|
|
26
|
+
|
|
27
|
+
export class PgBigSerial53Builder<T extends ColumnBuilderBaseConfig<'number', 'PgBigSerial53'>>
|
|
28
|
+
extends PgColumnBuilder<T>
|
|
29
|
+
{
|
|
30
|
+
static override readonly [entityKind]: string = 'PgBigSerial53Builder';
|
|
31
|
+
|
|
32
|
+
constructor(name: string) {
|
|
33
|
+
super(name, 'number', 'PgBigSerial53');
|
|
34
|
+
this.config.hasDefault = true;
|
|
35
|
+
this.config.notNull = true;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** @internal */
|
|
39
|
+
override build<TTableName extends string>(
|
|
40
|
+
table: AnyPgTable<{ name: TTableName }>,
|
|
41
|
+
): PgBigSerial53<MakeColumnConfig<T, TTableName>> {
|
|
42
|
+
return new PgBigSerial53<MakeColumnConfig<T, TTableName>>(
|
|
43
|
+
table,
|
|
44
|
+
this.config as ColumnBuilderRuntimeConfig<any, any>,
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export class PgBigSerial53<T extends ColumnBaseConfig<'number', 'PgBigSerial53'>> extends PgColumn<T> {
|
|
50
|
+
static override readonly [entityKind]: string = 'PgBigSerial53';
|
|
51
|
+
|
|
52
|
+
getSQLType(): string {
|
|
53
|
+
return 'bigserial';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
override mapFromDriverValue(value: number): number {
|
|
57
|
+
if (typeof value === 'number') {
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
return Number(value);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export type PgBigSerial64BuilderInitial<TName extends string> = NotNull<
|
|
65
|
+
HasDefault<
|
|
66
|
+
PgBigSerial64Builder<{
|
|
67
|
+
name: TName;
|
|
68
|
+
dataType: 'bigint';
|
|
69
|
+
columnType: 'PgBigSerial64';
|
|
70
|
+
data: bigint;
|
|
71
|
+
driverParam: string;
|
|
72
|
+
enumValues: undefined;
|
|
73
|
+
}>
|
|
74
|
+
>
|
|
75
|
+
>;
|
|
76
|
+
|
|
77
|
+
export class PgBigSerial64Builder<T extends ColumnBuilderBaseConfig<'bigint', 'PgBigSerial64'>>
|
|
78
|
+
extends PgColumnBuilder<T>
|
|
79
|
+
{
|
|
80
|
+
static override readonly [entityKind]: string = 'PgBigSerial64Builder';
|
|
81
|
+
|
|
82
|
+
constructor(name: string) {
|
|
83
|
+
super(name, 'bigint', 'PgBigSerial64');
|
|
84
|
+
this.config.hasDefault = true;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** @internal */
|
|
88
|
+
override build<TTableName extends string>(
|
|
89
|
+
table: AnyPgTable<{ name: TTableName }>,
|
|
90
|
+
): PgBigSerial64<MakeColumnConfig<T, TTableName>> {
|
|
91
|
+
return new PgBigSerial64<MakeColumnConfig<T, TTableName>>(
|
|
92
|
+
table,
|
|
93
|
+
this.config as ColumnBuilderRuntimeConfig<any, any>,
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export class PgBigSerial64<T extends ColumnBaseConfig<'bigint', 'PgBigSerial64'>> extends PgColumn<T> {
|
|
99
|
+
static override readonly [entityKind]: string = 'PgBigSerial64';
|
|
100
|
+
|
|
101
|
+
getSQLType(): string {
|
|
102
|
+
return 'bigserial';
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// eslint-disable-next-line unicorn/prefer-native-coercion-functions
|
|
106
|
+
override mapFromDriverValue(value: string): bigint {
|
|
107
|
+
return BigInt(value);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface PgBigSerialConfig<T extends 'number' | 'bigint' = 'number' | 'bigint'> {
|
|
112
|
+
mode: T;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function bigserial<TMode extends PgBigSerialConfig['mode']>(
|
|
116
|
+
config: PgBigSerialConfig<TMode>,
|
|
117
|
+
): TMode extends 'number' ? PgBigSerial53BuilderInitial<''> : PgBigSerial64BuilderInitial<''>;
|
|
118
|
+
export function bigserial<TName extends string, TMode extends PgBigSerialConfig['mode']>(
|
|
119
|
+
name: TName,
|
|
120
|
+
config: PgBigSerialConfig<TMode>,
|
|
121
|
+
): TMode extends 'number' ? PgBigSerial53BuilderInitial<TName> : PgBigSerial64BuilderInitial<TName>;
|
|
122
|
+
export function bigserial(a: string | PgBigSerialConfig, b?: PgBigSerialConfig) {
|
|
123
|
+
const { name, config } = getColumnNameAndConfig<PgBigSerialConfig>(a, b);
|
|
124
|
+
if (config.mode === 'number') {
|
|
125
|
+
return new PgBigSerial53Builder(name);
|
|
126
|
+
}
|
|
127
|
+
return new PgBigSerial64Builder(name);
|
|
128
|
+
}
|