From 2375fce46393fd83ea3a7b65bce2c7096080fdbc Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 21 Jun 2024 11:23:11 +1200 Subject: [PATCH] restructure sql modules to have flat imports --- .changeset/forty-crews-bow.md | 15 +++++++++++++ .../src/DurableExecutionJournal.ts | 4 ++-- .../test/DurableExecutionJournal.test.ts | 10 ++++----- packages/cluster/src/AtLeastOnceStorage.ts | 6 ++--- .../src/internal/atLeastOnceStorage.ts | 12 +++++----- packages/cluster/test/AtLeastOnce.test.ts | 14 ++++++------ packages/sql-drizzle/examples/sqlite.ts | 8 +++---- packages/sql-drizzle/src/Mysql.ts | 10 ++++----- packages/sql-drizzle/src/Pg.ts | 10 ++++----- packages/sql-drizzle/src/Sqlite.ts | 10 ++++----- packages/sql-drizzle/src/internal/patch.ts | 10 ++++----- packages/sql-drizzle/test/Mysql.test.ts | 6 ++--- packages/sql-drizzle/test/Pg.test.ts | 6 ++--- packages/sql-drizzle/test/Sqlite.test.ts | 10 ++++----- packages/sql-drizzle/test/utils.ts | 8 +++---- packages/sql-mssql/examples/migrations.ts | 18 +++++++-------- .../examples/migrations/0001_create_people.ts | 4 ++-- packages/sql-mssql/package.json | 1 + packages/sql-mssql/src/.index.ts | 10 +++++++++ .../src/{Client.ts => MssqlClient.ts} | 16 +++++++------- .../src/{Migrator.ts => MssqlMigrator.ts} | 8 +++---- packages/sql-mssql/src/Procedure.ts | 2 +- packages/sql-mssql/src/index.ts | 22 +++++++++---------- packages/sql-mssql/test/Client.test.ts | 8 +++---- .../examples/statement-transform.ts | 10 ++++----- packages/sql-mysql2/package.json | 1 + .../src/{Client.ts => MysqlClient.ts} | 18 +++++++-------- .../src/{Migrator.ts => MysqlMigrator.ts} | 10 ++++----- packages/sql-mysql2/src/index.ts | 8 ++----- packages/sql-pg/examples/resolver.ts | 14 ++++++------ packages/sql-pg/package.json | 1 + .../sql-pg/src/{Client.ts => PgClient.ts} | 16 +++++++------- .../sql-pg/src/{Migrator.ts => PgMigrator.ts} | 10 ++++----- packages/sql-pg/src/index.ts | 8 ++----- packages/sql-pg/test/Client.test.ts | 6 ++--- .../sql-sqlite-bun/examples/Client.test.ts | 4 ++-- packages/sql-sqlite-bun/package.json | 1 + .../src/{Client.ts => SqliteClient.ts} | 14 ++++++------ .../src/{Migrator.ts => SqliteMigrator.ts} | 10 ++++----- packages/sql-sqlite-bun/src/index.ts | 8 ++----- packages/sql-sqlite-node/package.json | 1 + .../src/{Client.ts => SqliteClient.ts} | 16 +++++++------- .../src/{Migrator.ts => SqliteMigrator.ts} | 10 ++++----- packages/sql-sqlite-node/src/index.ts | 8 ++----- packages/sql-sqlite-node/test/Client.test.ts | 4 ++-- .../sql-sqlite-node/test/Resolver.test.ts | 20 ++++++++--------- packages/sql-sqlite-react-native/package.json | 1 + .../src/{Client.ts => SqliteClient.ts} | 16 +++++++------- .../src/{Migrator.ts => SqliteMigrator.ts} | 8 +++---- packages/sql-sqlite-react-native/src/index.ts | 8 ++----- .../src/{Client.ts => SqliteClient.ts} | 16 +++++++------- .../src/{Migrator.ts => SqliteMigrator.ts} | 8 +++---- packages/sql-sqlite-wasm/src/index.ts | 8 ++----- packages/sql/package.json | 1 + packages/sql/src/Migrator.ts | 8 +++---- packages/sql/src/{Client.ts => SqlClient.ts} | 12 +++++----- .../src/{Connection.ts => SqlConnection.ts} | 2 +- packages/sql/src/{Error.ts => SqlError.ts} | 2 +- .../sql/src/{Resolver.ts => SqlResolver.ts} | 10 ++++----- packages/sql/src/{Schema.ts => SqlSchema.ts} | 0 packages/sql/src/{Stream.ts => SqlStream.ts} | 0 packages/sql/src/Statement.ts | 4 ++-- packages/sql/src/index.ts | 16 +++++++------- packages/sql/src/internal/client.ts | 16 +++++++------- packages/sql/src/internal/statement.ts | 4 ++-- 65 files changed, 287 insertions(+), 279 deletions(-) create mode 100644 .changeset/forty-crews-bow.md create mode 100644 packages/sql-mssql/src/.index.ts rename packages/sql-mssql/src/{Client.ts => MssqlClient.ts} (97%) rename packages/sql-mssql/src/{Migrator.ts => MssqlMigrator.ts} (79%) rename packages/sql-mysql2/src/{Client.ts => MysqlClient.ts} (94%) rename packages/sql-mysql2/src/{Migrator.ts => MysqlMigrator.ts} (90%) rename packages/sql-pg/src/{Client.ts => PgClient.ts} (96%) rename packages/sql-pg/src/{Migrator.ts => PgMigrator.ts} (90%) rename packages/sql-sqlite-bun/src/{Client.ts => SqliteClient.ts} (94%) rename packages/sql-sqlite-bun/src/{Migrator.ts => SqliteMigrator.ts} (88%) rename packages/sql-sqlite-node/src/{Client.ts => SqliteClient.ts} (95%) rename packages/sql-sqlite-node/src/{Migrator.ts => SqliteMigrator.ts} (88%) rename packages/sql-sqlite-react-native/src/{Client.ts => SqliteClient.ts} (94%) rename packages/sql-sqlite-react-native/src/{Migrator.ts => SqliteMigrator.ts} (77%) rename packages/sql-sqlite-wasm/src/{Client.ts => SqliteClient.ts} (93%) rename packages/sql-sqlite-wasm/src/{Migrator.ts => SqliteMigrator.ts} (77%) rename packages/sql/src/{Client.ts => SqlClient.ts} (86%) rename packages/sql/src/{Connection.ts => SqlConnection.ts} (96%) rename packages/sql/src/{Error.ts => SqlError.ts} (98%) rename packages/sql/src/{Resolver.ts => SqlResolver.ts} (98%) rename packages/sql/src/{Schema.ts => SqlSchema.ts} (100%) rename packages/sql/src/{Stream.ts => SqlStream.ts} (100%) diff --git a/.changeset/forty-crews-bow.md b/.changeset/forty-crews-bow.md new file mode 100644 index 0000000000..1c78113368 --- /dev/null +++ b/.changeset/forty-crews-bow.md @@ -0,0 +1,15 @@ +--- +"@effect/sql-sqlite-react-native": minor +"@effect/sql-sqlite-node": minor +"@effect/sql-sqlite-wasm": minor +"@effect/sql-sqlite-bun": minor +"@effect/sql-drizzle": minor +"@effect/sql-mysql2": minor +"@effect/sql-mssql": minor +"@effect/sql-pg": minor +"@effect/sql": minor +"@effect/cluster-workflow": patch +"@effect/cluster": patch +--- + +restructure sql modules to have flat imports diff --git a/packages/cluster-workflow/src/DurableExecutionJournal.ts b/packages/cluster-workflow/src/DurableExecutionJournal.ts index 17dc69d4bf..66219f15b7 100644 --- a/packages/cluster-workflow/src/DurableExecutionJournal.ts +++ b/packages/cluster-workflow/src/DurableExecutionJournal.ts @@ -3,7 +3,7 @@ */ import * as DurableExecutionEvent from "@effect/cluster-workflow/DurableExecutionEvent" import * as Schema from "@effect/schema/Schema" -import * as SqlClient from "@effect/sql/Client" +import * as SqlClient from "@effect/sql/SqlClient" import * as Context from "effect/Context" import * as Effect from "effect/Effect" import * as Layer from "effect/Layer" @@ -66,7 +66,7 @@ export const DurableExecutionJournal = Context.GenericTag Effect.gen(function*() { - const sql = yield* SqlClient.Client + const sql = yield* SqlClient.SqlClient yield* sql.onDialect({ mssql: () => diff --git a/packages/cluster-workflow/test/DurableExecutionJournal.test.ts b/packages/cluster-workflow/test/DurableExecutionJournal.test.ts index 75e2149f2a..d0dfc82d72 100644 --- a/packages/cluster-workflow/test/DurableExecutionJournal.test.ts +++ b/packages/cluster-workflow/test/DurableExecutionJournal.test.ts @@ -3,8 +3,8 @@ import * as DurableExecutionJournal from "@effect/cluster-workflow/DurableExecut import * as NodeFileSystem from "@effect/platform-node/NodeFileSystem" import * as FileSystem from "@effect/platform/FileSystem" import * as Schema from "@effect/schema/Schema" -import * as Sqlite from "@effect/sql-sqlite-node/Client" -import * as SqlClient from "@effect/sql/Client" +import * as Sqlite from "@effect/sql-sqlite-node/SqliteClient" +import * as SqlClient from "@effect/sql/SqlClient" import * as Chunk from "effect/Chunk" import * as Effect from "effect/Effect" import * as Layer from "effect/Layer" @@ -25,7 +25,7 @@ const runTest = Effect.gen(function*() { const sqlClient = yield* makeSqlClient const TestLive = DurableExecutionJournal.layer(options).pipe( - Layer.provideMerge(Layer.succeed(SqlClient.Client, sqlClient)) + Layer.provideMerge(Layer.succeed(SqlClient.SqlClient, sqlClient)) ) yield* program.pipe(Effect.provide(TestLive)) }).pipe( @@ -38,7 +38,7 @@ const runTest = describe("DurableExecutionJournal", () => { it("should create the execution table upon layer creation", () => Effect.gen(function*() { - const sql = yield* SqlClient.Client + const sql = yield* SqlClient.SqlClient const rows = yield* sql<{ table_name: string }>` SELECT name AS table_name @@ -51,7 +51,7 @@ describe("DurableExecutionJournal", () => { it("should store the execution in the table upon append", () => Effect.gen(function*() { - const sql = yield* SqlClient.Client + const sql = yield* SqlClient.SqlClient const journal = yield* DurableExecutionJournal.DurableExecutionJournal yield* journal.append( diff --git a/packages/cluster/src/AtLeastOnceStorage.ts b/packages/cluster/src/AtLeastOnceStorage.ts index 8862097eca..49136fbf8d 100644 --- a/packages/cluster/src/AtLeastOnceStorage.ts +++ b/packages/cluster/src/AtLeastOnceStorage.ts @@ -2,8 +2,8 @@ * @since 1.0.0 */ import type { Message } from "@effect/cluster/Message" -import type { Client } from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" +import type { SqlClient } from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import type { Tag } from "effect/Context" import type { Effect } from "effect/Effect" import type { Layer } from "effect/Layer" @@ -93,4 +93,4 @@ export declare namespace AtLeastOnceStorage { */ export const layer: ( options: AtLeastOnceStorage.MakeOptions -) => Layer = Internal.layer +) => Layer = Internal.layer diff --git a/packages/cluster/src/internal/atLeastOnceStorage.ts b/packages/cluster/src/internal/atLeastOnceStorage.ts index 49ae759ace..64e434714e 100644 --- a/packages/cluster/src/internal/atLeastOnceStorage.ts +++ b/packages/cluster/src/internal/atLeastOnceStorage.ts @@ -1,7 +1,7 @@ import * as Schema from "@effect/schema/Schema" -import * as SqlClient from "@effect/sql/Client" -import type * as SqlError from "@effect/sql/Error" -import * as SqlResolver from "@effect/sql/Resolver" +import * as SqlClient from "@effect/sql/SqlClient" +import type * as SqlError from "@effect/sql/SqlError" +import * as SqlResolver from "@effect/sql/SqlResolver" import * as Context from "effect/Context" import * as Effect from "effect/Effect" import * as Layer from "effect/Layer" @@ -31,10 +31,10 @@ export const atLeastOnceStorageTag: Context.Tag< const make = ({ table }: AtLeastOnceStorage.AtLeastOnceStorage.MakeOptions): Effect.Effect< AtLeastOnceStorage.AtLeastOnceStorage, SqlError.SqlError, - SqlClient.Client | Serialization.Serialization + SqlClient.SqlClient | Serialization.Serialization > => Effect.gen(function*() { - const sql = yield* SqlClient.Client + const sql = yield* SqlClient.SqlClient const serialization = yield* InternalSerialization.serializationTag yield* sql.onDialect({ @@ -214,5 +214,5 @@ const make = ({ table }: AtLeastOnceStorage.AtLeastOnceStorage.MakeOptions): Eff export const layer = (options: AtLeastOnceStorage.AtLeastOnceStorage.MakeOptions): Layer.Layer< AtLeastOnceStorage.AtLeastOnceStorage, SqlError.SqlError, - SqlClient.Client | Serialization.Serialization + SqlClient.SqlClient | Serialization.Serialization > => Layer.effect(atLeastOnceStorageTag, make(options)) diff --git a/packages/cluster/test/AtLeastOnce.test.ts b/packages/cluster/test/AtLeastOnce.test.ts index 26177a236a..c71bff2b3d 100644 --- a/packages/cluster/test/AtLeastOnce.test.ts +++ b/packages/cluster/test/AtLeastOnce.test.ts @@ -13,8 +13,8 @@ import * as Storage from "@effect/cluster/Storage" import * as NodeFileSystem from "@effect/platform-node/NodeFileSystem" import * as FileSystem from "@effect/platform/FileSystem" import * as Schema from "@effect/schema/Schema" -import * as Sqlite from "@effect/sql-sqlite-node/Client" -import * as SqlClient from "@effect/sql/Client" +import * as Sqlite from "@effect/sql-sqlite-node/SqliteClient" +import * as SqlClient from "@effect/sql/SqlClient" import * as Duration from "effect/Duration" import * as Effect from "effect/Effect" import * as Exit from "effect/Exit" @@ -62,7 +62,7 @@ const runTest = Layer.provideMerge(ShardingConfig.withDefaults({ entityTerminationTimeout: Duration.seconds(4) })), - Layer.provideMerge(Layer.succeed(SqlClient.Client, sqlClient)) + Layer.provideMerge(Layer.succeed(SqlClient.SqlClient, sqlClient)) ) yield* program.pipe(Effect.provide(TestLive)) }).pipe( @@ -75,7 +75,7 @@ const runTest = describe("AtLeastOnce", () => { it("should create the message table upon layer creation", () => Effect.gen(function*() { - const sql = yield* SqlClient.Client + const sql = yield* SqlClient.SqlClient const rows = yield* sql<{ table_name: string }>` SELECT name AS table_name @@ -90,7 +90,7 @@ describe("AtLeastOnce", () => { it("should store the message in the message table after sending", () => Effect.gen(function*() { - const sql = yield* SqlClient.Client + const sql = yield* SqlClient.SqlClient yield* Sharding.registerScoped @@ -115,7 +115,7 @@ describe("AtLeastOnce", () => { it("should mark a message as processed if the message state is processed", () => Effect.gen(function*() { - const sql = yield* SqlClient.Client + const sql = yield* SqlClient.SqlClient yield* Sharding.registerScoped @@ -143,7 +143,7 @@ describe("AtLeastOnce", () => { it("should not mark as processed if a message state is acknowledged", () => Effect.gen(function*() { - const sql = yield* SqlClient.Client + const sql = yield* SqlClient.SqlClient yield* Sharding.registerScoped diff --git a/packages/sql-drizzle/examples/sqlite.ts b/packages/sql-drizzle/examples/sqlite.ts index 1e57828442..7fb021cb91 100644 --- a/packages/sql-drizzle/examples/sqlite.ts +++ b/packages/sql-drizzle/examples/sqlite.ts @@ -1,12 +1,12 @@ -import * as Sql from "@effect/sql" +import { SqlClient } from "@effect/sql" import * as SqliteDrizzle from "@effect/sql-drizzle/Sqlite" -import * as Sqlite from "@effect/sql-sqlite-node" +import { SqliteClient } from "@effect/sql-sqlite-node" import * as D from "drizzle-orm/sqlite-core" import { Config, Effect, Layer } from "effect" // setup -const SqlLive = Sqlite.client.layer({ +const SqlLive = SqliteClient.layer({ filename: Config.succeed("test.db") }) const DrizzleLive = SqliteDrizzle.layer.pipe( @@ -22,7 +22,7 @@ const users = D.sqliteTable("users", { }) Effect.gen(function*() { - const sql = yield* Sql.client.Client + const sql = yield* SqlClient.SqlClient const db = yield* SqliteDrizzle.SqliteDrizzle yield* sql`CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)` yield* db.delete(users) diff --git a/packages/sql-drizzle/src/Mysql.ts b/packages/sql-drizzle/src/Mysql.ts index 2b94086fb9..bad13c8d4b 100644 --- a/packages/sql-drizzle/src/Mysql.ts +++ b/packages/sql-drizzle/src/Mysql.ts @@ -1,8 +1,8 @@ /** * @since 1.0.0 */ -import * as Client from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import { MySqlSelectBase } from "drizzle-orm/mysql-core" import type { MySqlRemoteDatabase } from "drizzle-orm/mysql-proxy" import { drizzle } from "drizzle-orm/mysql-proxy" @@ -16,8 +16,8 @@ import { makeRemoteCallback, patch, registerDialect } from "./internal/patch.js" * @since 1.0.0 * @category constructors */ -export const make: Effect.Effect = Effect.gen(function*() { - const client = yield* Client.Client +export const make: Effect.Effect = Effect.gen(function*() { + const client = yield* Client.SqlClient const db = drizzle(yield* makeRemoteCallback) registerDialect((db as any).dialect, client) return db @@ -36,7 +36,7 @@ export class MysqlDrizzle extends Context.Tag("@effect/sql-drizzle/Mysql")< * @since 1.0.0 * @category layers */ -export const layer: Layer.Layer = Layer.effect(MysqlDrizzle, make) +export const layer: Layer.Layer = Layer.effect(MysqlDrizzle, make) // patch diff --git a/packages/sql-drizzle/src/Pg.ts b/packages/sql-drizzle/src/Pg.ts index 49adf5a760..f55fed1c73 100644 --- a/packages/sql-drizzle/src/Pg.ts +++ b/packages/sql-drizzle/src/Pg.ts @@ -1,8 +1,8 @@ /** * @since 1.0.0 */ -import * as Client from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import { PgSelectBase } from "drizzle-orm/pg-core" import { drizzle } from "drizzle-orm/pg-proxy" import type { PgRemoteDatabase } from "drizzle-orm/pg-proxy" @@ -16,8 +16,8 @@ import { makeRemoteCallback, patch, registerDialect } from "./internal/patch.js" * @since 1.0.0 * @category constructors */ -export const make: Effect.Effect = Effect.gen(function*() { - const client = yield* Client.Client +export const make: Effect.Effect = Effect.gen(function*() { + const client = yield* Client.SqlClient const db = drizzle(yield* makeRemoteCallback) registerDialect((db as any).dialect, client) return db @@ -36,7 +36,7 @@ export class PgDrizzle extends Context.Tag("@effect/sql-drizzle/Pg")< * @since 1.0.0 * @category layers */ -export const layer: Layer.Layer = Layer.effect(PgDrizzle, make) +export const layer: Layer.Layer = Layer.effect(PgDrizzle, make) // patch diff --git a/packages/sql-drizzle/src/Sqlite.ts b/packages/sql-drizzle/src/Sqlite.ts index 8cf8422bb9..75a549fb2d 100644 --- a/packages/sql-drizzle/src/Sqlite.ts +++ b/packages/sql-drizzle/src/Sqlite.ts @@ -1,8 +1,8 @@ /** * @since 1.0.0 */ -import * as Client from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import { QueryPromise } from "drizzle-orm/query-promise" import { SQLiteSelectBase } from "drizzle-orm/sqlite-core" import type { SqliteRemoteDatabase } from "drizzle-orm/sqlite-proxy" @@ -17,8 +17,8 @@ import { makeRemoteCallback, patch, registerDialect } from "./internal/patch.js" * @since 1.0.0 * @category constructors */ -export const make: Effect.Effect = Effect.gen(function*() { - const client = yield* Client.Client +export const make: Effect.Effect = Effect.gen(function*() { + const client = yield* Client.SqlClient const db = drizzle(yield* makeRemoteCallback) registerDialect((db as any).dialect, client) return db @@ -37,7 +37,7 @@ export class SqliteDrizzle extends Context.Tag("@effect/sql-drizzle/Sqlite")< * @since 1.0.0 * @category layers */ -export const layer: Layer.Layer = Layer.scoped(SqliteDrizzle, make) +export const layer: Layer.Layer = Layer.scoped(SqliteDrizzle, make) // patch diff --git a/packages/sql-drizzle/src/internal/patch.ts b/packages/sql-drizzle/src/internal/patch.ts index 1c199ff319..3d164621fb 100644 --- a/packages/sql-drizzle/src/internal/patch.ts +++ b/packages/sql-drizzle/src/internal/patch.ts @@ -1,5 +1,5 @@ -import * as Client from "@effect/sql/Client" -import { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import { SqlError } from "@effect/sql/SqlError" import type { Statement } from "@effect/sql/Statement" import type { QueryPromise } from "drizzle-orm/query-promise" import * as DUtils from "drizzle-orm/utils" @@ -10,11 +10,11 @@ import * as Runtime from "effect/Runtime" const clientRegistry = globalValue( "@effect/sql-drizzle/clientRegistry", - () => new WeakMap() + () => new WeakMap() ) /** @internal */ -export const registerDialect = (dialect: unknown, client: Client.Client) => { +export const registerDialect = (dialect: unknown, client: Client.SqlClient) => { clientRegistry.set(dialect, client) } @@ -63,7 +63,7 @@ export const patch = (prototype: any) => { /** @internal */ export const makeRemoteCallback = Effect.gen(function*() { - const client = yield* Client.Client + const client = yield* Client.SqlClient const runtime = yield* Effect.runtime() const runPromise = Runtime.runPromise(runtime) return (sql: string, params: Array, method: "all" | "execute" | "get" | "values" | "run") => { diff --git a/packages/sql-drizzle/test/Mysql.test.ts b/packages/sql-drizzle/test/Mysql.test.ts index 57f7888932..59cef789df 100644 --- a/packages/sql-drizzle/test/Mysql.test.ts +++ b/packages/sql-drizzle/test/Mysql.test.ts @@ -1,4 +1,4 @@ -import * as Sql from "@effect/sql" +import { SqlClient } from "@effect/sql" import { MysqlDrizzle } from "@effect/sql-drizzle/Mysql" import { assert, describe, it } from "@effect/vitest" import * as D from "drizzle-orm/mysql-core" @@ -14,7 +14,7 @@ const users = D.mysqlTable("users", { describe.sequential("Mysql", () => { it.effect("works", () => Effect.gen(function*() { - const sql = yield* Sql.client.Client + const sql = yield* SqlClient.SqlClient const db = yield* MysqlDrizzle yield* sql`CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT NOT NULL, snake_case TEXT NOT NULL)` @@ -28,7 +28,7 @@ describe.sequential("Mysql", () => { it.effect("remote callback", () => Effect.gen(function*(_) { - const sql = yield* Sql.client.Client + const sql = yield* SqlClient.SqlClient const db = yield* MysqlDrizzle yield* sql`CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT NOT NULL, snake_case TEXT NOT NULL)` yield* Effect.promise(() => db.insert(users).values({ name: "Alice", snakeCase: "snake" })) diff --git a/packages/sql-drizzle/test/Pg.test.ts b/packages/sql-drizzle/test/Pg.test.ts index 8d2c04437e..504c898559 100644 --- a/packages/sql-drizzle/test/Pg.test.ts +++ b/packages/sql-drizzle/test/Pg.test.ts @@ -1,4 +1,4 @@ -import * as Sql from "@effect/sql" +import { SqlClient } from "@effect/sql" import { PgDrizzle } from "@effect/sql-drizzle/Pg" import { assert, describe, it } from "@effect/vitest" import * as D from "drizzle-orm/pg-core" @@ -14,7 +14,7 @@ const users = D.pgTable("users", { describe.sequential("Pg", () => { it.effect("works", () => Effect.gen(function*() { - const sql = yield* Sql.client.Client + const sql = yield* SqlClient.SqlClient const db = yield* PgDrizzle yield* sql`CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT NOT NULL, snake_case TEXT NOT NULL)` @@ -30,7 +30,7 @@ describe.sequential("Pg", () => { it.effect("remote callback", () => Effect.gen(function*(_) { - const sql = yield* Sql.client.Client + const sql = yield* SqlClient.SqlClient const db = yield* PgDrizzle yield* sql`CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT NOT NULL, snake_case TEXT NOT NULL)` yield* Effect.promise(() => db.insert(users).values({ name: "Alice", snakeCase: "snake" })) diff --git a/packages/sql-drizzle/test/Sqlite.test.ts b/packages/sql-drizzle/test/Sqlite.test.ts index 15e341d704..f3deeef742 100644 --- a/packages/sql-drizzle/test/Sqlite.test.ts +++ b/packages/sql-drizzle/test/Sqlite.test.ts @@ -1,8 +1,8 @@ import { FileSystem } from "@effect/platform" import { NodeFileSystem } from "@effect/platform-node" -import * as Sql from "@effect/sql" +import { SqlClient } from "@effect/sql" import * as SqliteDrizzle from "@effect/sql-drizzle/Sqlite" -import * as Sqlite from "@effect/sql-sqlite-node" +import { SqliteClient } from "@effect/sql-sqlite-node" import { assert, describe, it } from "@effect/vitest" import * as D from "drizzle-orm/sqlite-core" import { Effect } from "effect" @@ -10,7 +10,7 @@ import { Effect } from "effect" const makeClient = Effect.gen(function*(_) { const fs = yield* _(FileSystem.FileSystem) const dir = yield* _(fs.makeTempDirectoryScoped()) - return yield* _(Sqlite.client.make({ + return yield* _(SqliteClient.make({ filename: dir + "/test.db" })) }).pipe(Effect.provide(NodeFileSystem.layer)) @@ -26,7 +26,7 @@ describe("SqliteDrizzle", () => { Effect.gen(function*(_) { const sql = yield* _(makeClient) const db = yield* SqliteDrizzle.make.pipe( - Effect.provideService(Sql.client.Client, sql) + Effect.provideService(SqlClient.SqlClient, sql) ) yield* sql`CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, snake_case TEXT)` yield* db.insert(users).values({ name: "Alice", snakeCase: "snake" }) @@ -38,7 +38,7 @@ describe("SqliteDrizzle", () => { Effect.gen(function*(_) { const sql = yield* _(makeClient) const db = yield* SqliteDrizzle.make.pipe( - Effect.provideService(Sql.client.Client, sql) + Effect.provideService(SqlClient.SqlClient, sql) ) yield* sql`CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, snake_case TEXT)` yield* Effect.promise(() => db.insert(users).values({ name: "Alice", snakeCase: "snake" })) diff --git a/packages/sql-drizzle/test/utils.ts b/packages/sql-drizzle/test/utils.ts index 03f5e1c33d..370859b9da 100644 --- a/packages/sql-drizzle/test/utils.ts +++ b/packages/sql-drizzle/test/utils.ts @@ -1,7 +1,7 @@ import * as MysqlDrizzle from "@effect/sql-drizzle/Mysql" import * as PgDrizzle from "@effect/sql-drizzle/Pg" -import * as Mysql from "@effect/sql-mysql2" -import * as Pg from "@effect/sql-pg" +import { MysqlClient } from "@effect/sql-mysql2" +import { PgClient } from "@effect/sql-pg" import type { StartedMySqlContainer } from "@testcontainers/mysql" import { MySqlContainer } from "@testcontainers/mysql" import { PostgreSqlContainer, type StartedPostgreSqlContainer } from "@testcontainers/postgresql" @@ -29,7 +29,7 @@ export class PgContainer extends Context.Tag("test/PgContainer")< static ClientLive = Layer.unwrapEffect( Effect.gen(function*(_) { const container = yield* _(PgContainer) - return Pg.client.layer({ + return PgClient.layer({ url: Config.succeed(Redacted.make(container.getConnectionUri())) }) }) @@ -56,7 +56,7 @@ export class MysqlContainer extends Context.Tag("test/MysqlContainer")< static ClientLive = Layer.unwrapEffect( Effect.gen(function*(_) { const container = yield* _(MysqlContainer) - return Mysql.client.layer({ + return MysqlClient.layer({ url: Config.succeed(Redacted.make(container.getConnectionUri())) }) }) diff --git a/packages/sql-mssql/examples/migrations.ts b/packages/sql-mssql/examples/migrations.ts index 574701462f..83c8ed0f6a 100644 --- a/packages/sql-mssql/examples/migrations.ts +++ b/packages/sql-mssql/examples/migrations.ts @@ -1,19 +1,19 @@ import * as DevTools from "@effect/experimental/DevTools" import { NodeFileSystem } from "@effect/platform-node" -import * as Mssql from "@effect/sql-mssql" +import { MssqlClient, MssqlMigrator, MssqlTypes, Procedure } from "@effect/sql-mssql" import { Config, Effect, Layer, Logger, LogLevel, Redacted, String } from "effect" import { pipe } from "effect/Function" import { fileURLToPath } from "node:url" const peopleProcedure = pipe( - Mssql.procedure.make("people_proc"), - Mssql.procedure.param()("name", Mssql.types.VarChar), - Mssql.procedure.withRows<{ readonly id: number; readonly name: string }>(), - Mssql.procedure.compile + Procedure.make("people_proc"), + Procedure.param()("name", MssqlTypes.VarChar), + Procedure.withRows<{ readonly id: number; readonly name: string }>(), + Procedure.compile ) const program = Effect.gen(function*(_) { - const sql = yield* _(Mssql.client.MssqlClient) + const sql = yield* _(MssqlClient.MssqlClient) yield* _( sql` @@ -77,13 +77,13 @@ const program = Effect.gen(function*(_) { ) }) -const SqlLive = Mssql.migrator.layer({ - loader: Mssql.migrator.fromFileSystem( +const SqlLive = MssqlMigrator.layer({ + loader: MssqlMigrator.fromFileSystem( fileURLToPath(new URL("./migrations", import.meta.url)) ) }).pipe( Layer.provideMerge( - Mssql.client.layer({ + MssqlClient.layer({ database: Config.succeed("msdb"), server: Config.succeed("localhost"), username: Config.succeed("sa"), diff --git a/packages/sql-mssql/examples/migrations/0001_create_people.ts b/packages/sql-mssql/examples/migrations/0001_create_people.ts index 1b1c5fe7f0..0f6e83ed9c 100644 --- a/packages/sql-mssql/examples/migrations/0001_create_people.ts +++ b/packages/sql-mssql/examples/migrations/0001_create_people.ts @@ -1,8 +1,8 @@ -import * as Sql from "@effect/sql-mssql" +import { MssqlClient } from "@effect/sql-mssql" import { Effect } from "effect" export default Effect.flatMap( - Sql.client.MssqlClient, + MssqlClient.MssqlClient, (sql) => sql`CREATE TABLE people ( id INT IDENTITY(1,1) PRIMARY KEY, diff --git a/packages/sql-mssql/package.json b/packages/sql-mssql/package.json index 4a8c740bff..ae8187cbaa 100644 --- a/packages/sql-mssql/package.json +++ b/packages/sql-mssql/package.json @@ -29,6 +29,7 @@ "provenance": true }, "scripts": { + "codegen": "build-utils prepare-v2", "build": "pnpm build-esm && pnpm build-cjs && pnpm build-annotate && build-utils pack-v2", "build-esm": "tsc -b tsconfig.build.json", "build-cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps", diff --git a/packages/sql-mssql/src/.index.ts b/packages/sql-mssql/src/.index.ts new file mode 100644 index 0000000000..e251c89d63 --- /dev/null +++ b/packages/sql-mssql/src/.index.ts @@ -0,0 +1,10 @@ +/** + * @since 1.0.0 + */ + +export { + /** + * @since 1.0.0 + */ + TYPES as MssqlTypes +} from "tedious" diff --git a/packages/sql-mssql/src/Client.ts b/packages/sql-mssql/src/MssqlClient.ts similarity index 97% rename from packages/sql-mssql/src/Client.ts rename to packages/sql-mssql/src/MssqlClient.ts index 3009b22423..a1fcd5fbaa 100644 --- a/packages/sql-mssql/src/Client.ts +++ b/packages/sql-mssql/src/MssqlClient.ts @@ -1,9 +1,9 @@ /** * @since 1.0.0 */ -import * as Client from "@effect/sql/Client" -import type { Connection } from "@effect/sql/Connection" -import { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import type { Connection } from "@effect/sql/SqlConnection" +import { SqlError } from "@effect/sql/SqlError" import * as Statement from "@effect/sql/Statement" import * as Otel from "@opentelemetry/semantic-conventions" import * as Config from "effect/Config" @@ -29,7 +29,7 @@ import type * as Procedure from "./Procedure.js" * @category type ids * @since 1.0.0 */ -export const TypeId: unique symbol = Symbol.for("@effect/sql-mssql/Client") +export const TypeId: unique symbol = Symbol.for("@effect/sql-mssql/MssqlClient") /** * @category type ids @@ -41,7 +41,7 @@ export type TypeId = typeof TypeId * @category models * @since 1.0.0 */ -export interface MssqlClient extends Client.Client { +export interface MssqlClient extends Client.SqlClient { readonly [TypeId]: TypeId readonly config: MssqlClientConfig @@ -65,7 +65,7 @@ export interface MssqlClient extends Client.Client { * @category tags * @since 1.0.0 */ -export const MssqlClient = Context.GenericTag("@effect/sql-mssql/Client") +export const MssqlClient = Context.GenericTag("@effect/sql-mssql/MssqlClient") /** * @category models @@ -411,13 +411,13 @@ export const make = ( */ export const layer = ( config: Config.Config.Wrap -): Layer.Layer => +): Layer.Layer => Layer.scopedContext( Config.unwrap(config).pipe( Effect.flatMap(make), Effect.map((client) => Context.make(MssqlClient, client).pipe( - Context.add(Client.Client, client) + Context.add(Client.SqlClient, client) ) ) ) diff --git a/packages/sql-mssql/src/Migrator.ts b/packages/sql-mssql/src/MssqlMigrator.ts similarity index 79% rename from packages/sql-mssql/src/Migrator.ts rename to packages/sql-mssql/src/MssqlMigrator.ts index f6e84db69e..f8bd71948e 100644 --- a/packages/sql-mssql/src/Migrator.ts +++ b/packages/sql-mssql/src/MssqlMigrator.ts @@ -1,9 +1,9 @@ /** * @since 1.0.0 */ -import type * as Client from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" import * as Migrator from "@effect/sql/Migrator" +import type * as Client from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import type * as Effect from "effect/Effect" import * as Layer from "effect/Layer" @@ -26,7 +26,7 @@ export const run: ( ) => Effect.Effect< ReadonlyArray, SqlError | Migrator.MigrationError, - Client.Client | R + Client.SqlClient | R > = Migrator.make({}) /** @@ -35,4 +35,4 @@ export const run: ( */ export const layer = ( options: Migrator.MigratorOptions -): Layer.Layer => Layer.effectDiscard(run(options)) +): Layer.Layer => Layer.effectDiscard(run(options)) diff --git a/packages/sql-mssql/src/Procedure.ts b/packages/sql-mssql/src/Procedure.ts index fd51c9946e..afa838a157 100644 --- a/packages/sql-mssql/src/Procedure.ts +++ b/packages/sql-mssql/src/Procedure.ts @@ -1,7 +1,7 @@ /** * @since 1.0.0 */ -import type { Row } from "@effect/sql/Connection" +import type { Row } from "@effect/sql/SqlConnection" import { identity } from "effect/Function" import type { Pipeable } from "effect/Pipeable" import { pipeArguments } from "effect/Pipeable" diff --git a/packages/sql-mssql/src/index.ts b/packages/sql-mssql/src/index.ts index 3dfd0065d2..e939e07b3f 100644 --- a/packages/sql-mssql/src/index.ts +++ b/packages/sql-mssql/src/index.ts @@ -2,29 +2,29 @@ * @since 1.0.0 */ +export { + /** + * @since 1.0.0 + */ + TYPES as MssqlTypes +} from "tedious" + /** * @since 1.0.0 */ -export * as client from "./Client.js" +export * as MssqlClient from "./MssqlClient.js" /** * @since 1.0.0 */ -export * as migrator from "./Migrator.js" +export * as MssqlMigrator from "./MssqlMigrator.js" /** * @since 1.0.0 */ -export * as parameter from "./Parameter.js" +export * as Parameter from "./Parameter.js" /** * @since 1.0.0 */ -export * as procedure from "./Procedure.js" - -export { - /** - * @since 1.0.0 - */ - TYPES as types -} from "tedious" +export * as Procedure from "./Procedure.js" diff --git a/packages/sql-mssql/test/Client.test.ts b/packages/sql-mssql/test/Client.test.ts index 03697262d3..88ac2478fc 100644 --- a/packages/sql-mssql/test/Client.test.ts +++ b/packages/sql-mssql/test/Client.test.ts @@ -1,4 +1,4 @@ -import * as Sql from "@effect/sql-mssql" +import { MssqlClient, MssqlTypes } from "@effect/sql-mssql" import type { Custom } from "@effect/sql/Statement" import { isCustom } from "@effect/sql/Statement" import { Effect } from "effect" @@ -6,7 +6,7 @@ import { describe, expect, it } from "vitest" const sql = Effect.runSync( Effect.scoped( - Sql.client.make({ + MssqlClient.make({ server: "" }) ) @@ -74,7 +74,7 @@ describe("mssql", () => { it("param types", () => { const [query, params] = sql`SELECT * FROM ${sql("people")} WHERE id = ${ sql.param( - Sql.types.BigInt, + MssqlTypes.BigInt, 1 ) }`.compile() @@ -86,7 +86,7 @@ describe("mssql", () => { any, any > - expect(param.i0).toEqual(Sql.types.BigInt) + expect(param.i0).toEqual(MssqlTypes.BigInt) expect(param.i1).toEqual(1) expect(param.i2).toEqual({}) }) diff --git a/packages/sql-mysql2/examples/statement-transform.ts b/packages/sql-mysql2/examples/statement-transform.ts index 36a156ae17..83b66f069d 100644 --- a/packages/sql-mysql2/examples/statement-transform.ts +++ b/packages/sql-mysql2/examples/statement-transform.ts @@ -1,11 +1,11 @@ import * as DevTools from "@effect/experimental/DevTools" -import * as Sql from "@effect/sql" -import * as Mysql from "@effect/sql-mysql2" +import { SqlClient, Statement } from "@effect/sql" +import { MysqlClient } from "@effect/sql-mysql2" import { Config, Effect, FiberRef, FiberRefs, Layer, Option, Redacted, String } from "effect" const currentResourceName = FiberRef.unsafeMake("") -const SqlTracingLive = Sql.statement.setTransformer((prev, sql, refs, span) => { +const SqlTracingLive = Statement.setTransformer((prev, sql, refs, span) => { const [query, params] = prev.compile() return sql.unsafe( `/* ${ @@ -19,7 +19,7 @@ const SqlTracingLive = Sql.statement.setTransformer((prev, sql, refs, span) => { ) }) -const EnvLive = Mysql.client.layer({ +const EnvLive = MysqlClient.layer({ database: Config.succeed("effect_dev"), username: Config.succeed("effect"), password: Config.succeed(Redacted.make("password")), @@ -31,7 +31,7 @@ const EnvLive = Mysql.client.layer({ ) const program = Effect.gen(function*(_) { - const sql = yield* _(Sql.client.Client) + const sql = yield* _(SqlClient.SqlClient) yield* _( sql`SELECT * FROM people`, Effect.replicateEffect(50), diff --git a/packages/sql-mysql2/package.json b/packages/sql-mysql2/package.json index 6fc9b753b4..d696a4e809 100644 --- a/packages/sql-mysql2/package.json +++ b/packages/sql-mysql2/package.json @@ -29,6 +29,7 @@ "provenance": true }, "scripts": { + "codegen": "build-utils prepare-v2", "build": "pnpm build-esm && pnpm build-cjs && pnpm build-annotate && build-utils pack-v2", "build-esm": "tsc -b tsconfig.build.json", "build-cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps", diff --git a/packages/sql-mysql2/src/Client.ts b/packages/sql-mysql2/src/MysqlClient.ts similarity index 94% rename from packages/sql-mysql2/src/Client.ts rename to packages/sql-mysql2/src/MysqlClient.ts index e2623c0ad0..fdff695b9b 100644 --- a/packages/sql-mysql2/src/Client.ts +++ b/packages/sql-mysql2/src/MysqlClient.ts @@ -1,11 +1,11 @@ /** * @since 1.0.0 */ -import * as Client from "@effect/sql/Client" -import type { Connection } from "@effect/sql/Connection" -import { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import type { Connection } from "@effect/sql/SqlConnection" +import { SqlError } from "@effect/sql/SqlError" +import { asyncPauseResume } from "@effect/sql/SqlStream" import * as Statement from "@effect/sql/Statement" -import { asyncPauseResume } from "@effect/sql/Stream" import * as Otel from "@opentelemetry/semantic-conventions" import * as Chunk from "effect/Chunk" import * as Config from "effect/Config" @@ -23,7 +23,7 @@ import * as Mysql from "mysql2" * @category type ids * @since 1.0.0 */ -export const TypeId: unique symbol = Symbol.for("@effect/sql-mysql2/Client") +export const TypeId: unique symbol = Symbol.for("@effect/sql-mysql2/MysqlClient") /** * @category type ids @@ -35,7 +35,7 @@ export type TypeId = typeof TypeId * @category models * @since 1.0.0 */ -export interface MysqlClient extends Client.Client { +export interface MysqlClient extends Client.SqlClient { readonly [TypeId]: TypeId readonly config: MysqlClientConfig } @@ -44,7 +44,7 @@ export interface MysqlClient extends Client.Client { * @category tags * @since 1.0.0 */ -export const MysqlClient = Context.GenericTag("@effect/sql-mysql2/Client") +export const MysqlClient = Context.GenericTag("@effect/sql-mysql2/MysqlClient") /** * @category models @@ -207,13 +207,13 @@ export const make = ( */ export const layer = ( config: Config.Config.Wrap -): Layer.Layer => +): Layer.Layer => Layer.scopedContext( Config.unwrap(config).pipe( Effect.flatMap(make), Effect.map((client) => Context.make(MysqlClient, client).pipe( - Context.add(Client.Client, client) + Context.add(Client.SqlClient, client) ) ) ) diff --git a/packages/sql-mysql2/src/Migrator.ts b/packages/sql-mysql2/src/MysqlMigrator.ts similarity index 90% rename from packages/sql-mysql2/src/Migrator.ts rename to packages/sql-mysql2/src/MysqlMigrator.ts index 1b1fa46597..68465bdf48 100644 --- a/packages/sql-mysql2/src/Migrator.ts +++ b/packages/sql-mysql2/src/MysqlMigrator.ts @@ -5,13 +5,13 @@ import * as Command from "@effect/platform/Command" import type { CommandExecutor } from "@effect/platform/CommandExecutor" import { FileSystem } from "@effect/platform/FileSystem" import { Path } from "@effect/platform/Path" -import type * as Client from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" import * as Migrator from "@effect/sql/Migrator" +import type * as Client from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import * as Effect from "effect/Effect" import * as Layer from "effect/Layer" import * as Redacted from "effect/Redacted" -import { MysqlClient } from "./Client.js" +import { MysqlClient } from "./MysqlClient.js" /** * @since 1.0.0 @@ -32,7 +32,7 @@ export const run: ( ) => Effect.Effect< ReadonlyArray, Migrator.MigrationError | SqlError, - FileSystem | Path | MysqlClient | Client.Client | CommandExecutor | R2 + FileSystem | Path | MysqlClient | Client.SqlClient | CommandExecutor | R2 > = Migrator.make({ dumpSchema(path, table) { const mysqlDump = (args: Array) => @@ -98,5 +98,5 @@ export const layer = ( ): Layer.Layer< never, Migrator.MigrationError | SqlError, - MysqlClient | Client.Client | CommandExecutor | FileSystem | Path | R + MysqlClient | Client.SqlClient | CommandExecutor | FileSystem | Path | R > => Layer.effectDiscard(run(options)) diff --git a/packages/sql-mysql2/src/index.ts b/packages/sql-mysql2/src/index.ts index 8aacdc4a12..0c1c15c588 100644 --- a/packages/sql-mysql2/src/index.ts +++ b/packages/sql-mysql2/src/index.ts @@ -1,13 +1,9 @@ /** * @since 1.0.0 */ +export * as MysqlClient from "./MysqlClient.js" /** * @since 1.0.0 */ -export * as client from "./Client.js" - -/** - * @since 1.0.0 - */ -export * as migrator from "./Migrator.js" +export * as MysqlMigrator from "./MysqlMigrator.js" diff --git a/packages/sql-pg/examples/resolver.ts b/packages/sql-pg/examples/resolver.ts index 59a08a25c1..0e94c31c10 100644 --- a/packages/sql-pg/examples/resolver.ts +++ b/packages/sql-pg/examples/resolver.ts @@ -1,7 +1,7 @@ import * as DevTools from "@effect/experimental/DevTools" import * as Schema from "@effect/schema/Schema" -import * as Sql from "@effect/sql" -import * as Pg from "@effect/sql-pg" +import { SqlClient, SqlResolver } from "@effect/sql" +import { PgClient } from "@effect/sql-pg" import { Config, Effect, Layer, String } from "effect" class Person extends Schema.Class("Person")({ @@ -15,24 +15,24 @@ const InsertPersonSchema = Schema.Struct(Person.fields).pipe( ) const program = Effect.gen(function*(_) { - const sql = yield* Sql.client.Client + const sql = yield* SqlClient.SqlClient yield* sql`TRUNCATE TABLE people RESTART IDENTITY CASCADE` - const Insert = yield* Sql.resolver.ordered("InsertPerson", { + const Insert = yield* SqlResolver.ordered("InsertPerson", { Request: InsertPersonSchema, Result: Person, execute: (requests) => sql`INSERT INTO people ${sql.insert(requests)} RETURNING people.*` }) - const GetById = yield* Sql.resolver.findById("GetPersonById", { + const GetById = yield* SqlResolver.findById("GetPersonById", { Id: Schema.Number, Result: Person, ResultId: (result) => result.id, execute: (ids) => sql`SELECT * FROM people WHERE id IN ${sql.in(ids)}` }) - const GetByName = yield* Sql.resolver.grouped("GetPersonByName", { + const GetByName = yield* SqlResolver.grouped("GetPersonByName", { Request: Schema.String, RequestGroupKey: (_) => _, Result: Person, @@ -72,7 +72,7 @@ const program = Effect.gen(function*(_) { ) }) -const PgLive = Pg.client.layer({ +const PgLive = PgClient.layer({ database: Config.succeed("effect_pg_dev"), transformQueryNames: Config.succeed(String.camelToSnake), transformResultNames: Config.succeed(String.snakeToCamel) diff --git a/packages/sql-pg/package.json b/packages/sql-pg/package.json index 8c9d6898e0..f159a95e6a 100644 --- a/packages/sql-pg/package.json +++ b/packages/sql-pg/package.json @@ -29,6 +29,7 @@ "provenance": true }, "scripts": { + "codegen": "build-utils prepare-v2", "build": "pnpm build-esm && pnpm build-cjs && pnpm build-annotate && build-utils pack-v2", "build-esm": "tsc -b tsconfig.build.json", "build-cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps", diff --git a/packages/sql-pg/src/Client.ts b/packages/sql-pg/src/PgClient.ts similarity index 96% rename from packages/sql-pg/src/Client.ts rename to packages/sql-pg/src/PgClient.ts index a01f47c00d..3ab7715f2e 100644 --- a/packages/sql-pg/src/Client.ts +++ b/packages/sql-pg/src/PgClient.ts @@ -1,9 +1,9 @@ /** * @since 1.0.0 */ -import * as Client from "@effect/sql/Client" -import type { Connection } from "@effect/sql/Connection" -import { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import type { Connection } from "@effect/sql/SqlConnection" +import { SqlError } from "@effect/sql/SqlError" import type { Custom, Fragment, Primitive } from "@effect/sql/Statement" import * as Statement from "@effect/sql/Statement" import * as Otel from "@opentelemetry/semantic-conventions" @@ -24,7 +24,7 @@ import postgres from "postgres" * @category type ids * @since 1.0.0 */ -export const TypeId: unique symbol = Symbol.for("@effect/sql-pg/Client") +export const TypeId: unique symbol = Symbol.for("@effect/sql-pg/PgClient") /** * @category type ids @@ -36,7 +36,7 @@ export type TypeId = typeof TypeId * @category models * @since 1.0.0 */ -export interface PgClient extends Client.Client { +export interface PgClient extends Client.SqlClient { readonly [TypeId]: TypeId readonly config: PgClientConfig readonly json: (_: unknown) => Fragment @@ -47,7 +47,7 @@ export interface PgClient extends Client.Client { * @category tags * @since 1.0.0 */ -export const PgClient = Context.GenericTag("@effect/sql-pg/Client") +export const PgClient = Context.GenericTag("@effect/sql-pg/PgClient") /** * @category constructors @@ -230,13 +230,13 @@ export const make = ( */ export const layer = ( config: Config.Config.Wrap -): Layer.Layer => +): Layer.Layer => Layer.scopedContext( Config.unwrap(config).pipe( Effect.flatMap(make), Effect.map((client) => Context.make(PgClient, client).pipe( - Context.add(Client.Client, client) + Context.add(Client.SqlClient, client) ) ) ) diff --git a/packages/sql-pg/src/Migrator.ts b/packages/sql-pg/src/PgMigrator.ts similarity index 90% rename from packages/sql-pg/src/Migrator.ts rename to packages/sql-pg/src/PgMigrator.ts index 3ccabc8996..0385afcebd 100644 --- a/packages/sql-pg/src/Migrator.ts +++ b/packages/sql-pg/src/PgMigrator.ts @@ -5,13 +5,13 @@ import * as Command from "@effect/platform/Command" import type { CommandExecutor } from "@effect/platform/CommandExecutor" import { FileSystem } from "@effect/platform/FileSystem" import { Path } from "@effect/platform/Path" -import type * as Client from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" import * as Migrator from "@effect/sql/Migrator" +import type * as Client from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import * as Effect from "effect/Effect" import * as Layer from "effect/Layer" import * as Redacted from "effect/Redacted" -import { PgClient } from "./Client.js" +import { PgClient } from "./PgClient.js" /** * @since 1.0.0 @@ -32,7 +32,7 @@ export const run: ( ) => Effect.Effect< ReadonlyArray, Migrator.MigrationError | SqlError, - FileSystem | Path | PgClient | Client.Client | CommandExecutor | R2 + FileSystem | Path | PgClient | Client.SqlClient | CommandExecutor | R2 > = Migrator.make({ dumpSchema(path, table) { const pgDump = (args: Array) => @@ -100,5 +100,5 @@ export const layer = ( ): Layer.Layer< never, Migrator.MigrationError | SqlError, - PgClient | Client.Client | CommandExecutor | FileSystem | Path | R + PgClient | Client.SqlClient | CommandExecutor | FileSystem | Path | R > => Layer.effectDiscard(run(options)) diff --git a/packages/sql-pg/src/index.ts b/packages/sql-pg/src/index.ts index 8aacdc4a12..fc240bb61a 100644 --- a/packages/sql-pg/src/index.ts +++ b/packages/sql-pg/src/index.ts @@ -1,13 +1,9 @@ /** * @since 1.0.0 */ +export * as PgClient from "./PgClient.js" /** * @since 1.0.0 */ -export * as client from "./Client.js" - -/** - * @since 1.0.0 - */ -export * as migrator from "./Migrator.js" +export * as PgMigrator from "./PgMigrator.js" diff --git a/packages/sql-pg/test/Client.test.ts b/packages/sql-pg/test/Client.test.ts index 0a9658f122..8b0a1b3ee1 100644 --- a/packages/sql-pg/test/Client.test.ts +++ b/packages/sql-pg/test/Client.test.ts @@ -1,10 +1,10 @@ -import * as Sql from "@effect/sql-pg" +import { PgClient } from "@effect/sql-pg" import { defaultTransforms } from "@effect/sql/Statement" import { Effect, Scope, String } from "effect" import { assert, describe, expect, it } from "vitest" -const sql = Effect.runSync(Scope.extend(Sql.client.make({}), Effect.runSync(Scope.make()))) -const compilerTransform = Sql.client.makeCompiler(String.camelToSnake) +const sql = Effect.runSync(Scope.extend(PgClient.make({}), Effect.runSync(Scope.make()))) +const compilerTransform = PgClient.makeCompiler(String.camelToSnake) const transformsNested = defaultTransforms(String.snakeToCamel) const transforms = defaultTransforms(String.snakeToCamel, false) diff --git a/packages/sql-sqlite-bun/examples/Client.test.ts b/packages/sql-sqlite-bun/examples/Client.test.ts index 90049df306..8395c2f520 100644 --- a/packages/sql-sqlite-bun/examples/Client.test.ts +++ b/packages/sql-sqlite-bun/examples/Client.test.ts @@ -1,13 +1,13 @@ import { BunFileSystem } from "@effect/platform-bun" import { FileSystem } from "@effect/platform/FileSystem" -import * as Sqlite from "@effect/sql-sqlite-bun" +import { SqliteClient } from "@effect/sql-sqlite-bun" import { describe, expect, test } from "bun:test" import { Effect } from "effect" const makeClient = Effect.gen(function*(_) { const fs = yield* _(FileSystem) const dir = yield* _(fs.makeTempDirectoryScoped()) - return yield* _(Sqlite.client.make({ + return yield* _(SqliteClient.make({ filename: dir + "/test.db" })) }).pipe(Effect.provide(BunFileSystem.layer)) diff --git a/packages/sql-sqlite-bun/package.json b/packages/sql-sqlite-bun/package.json index 105a665e42..2af38588f9 100644 --- a/packages/sql-sqlite-bun/package.json +++ b/packages/sql-sqlite-bun/package.json @@ -29,6 +29,7 @@ "provenance": true }, "scripts": { + "codegen": "build-utils prepare-v2", "build": "pnpm build-esm && pnpm build-cjs && pnpm build-annotate && build-utils pack-v2", "build-esm": "tsc -b tsconfig.build.json", "build-cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps", diff --git a/packages/sql-sqlite-bun/src/Client.ts b/packages/sql-sqlite-bun/src/SqliteClient.ts similarity index 94% rename from packages/sql-sqlite-bun/src/Client.ts rename to packages/sql-sqlite-bun/src/SqliteClient.ts index 22576c3896..b7c5b853c0 100644 --- a/packages/sql-sqlite-bun/src/Client.ts +++ b/packages/sql-sqlite-bun/src/SqliteClient.ts @@ -1,9 +1,9 @@ /** * @since 1.0.0 */ -import * as Client from "@effect/sql/Client" -import type { Connection } from "@effect/sql/Connection" -import { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import type { Connection } from "@effect/sql/SqlConnection" +import { SqlError } from "@effect/sql/SqlError" import * as Statement from "@effect/sql/Statement" import * as Otel from "@opentelemetry/semantic-conventions" import { Database } from "bun:sqlite" @@ -19,7 +19,7 @@ import * as Scope from "effect/Scope" * @category type ids * @since 1.0.0 */ -export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-bun/Client") +export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-bun/SqliteClient") /** * @category type ids @@ -31,7 +31,7 @@ export type TypeId = typeof TypeId * @category models * @since 1.0.0 */ -export interface SqliteClient extends Client.Client { +export interface SqliteClient extends Client.SqlClient { readonly [TypeId]: TypeId readonly config: SqliteClientConfig readonly export: Effect.Effect @@ -186,13 +186,13 @@ export const make = ( */ export const layer = ( config: Config.Config.Wrap -): Layer.Layer => +): Layer.Layer => Layer.scopedContext( Config.unwrap(config).pipe( Effect.flatMap(make), Effect.map((client) => Context.make(SqliteClient, client).pipe( - Context.add(Client.Client, client) + Context.add(Client.SqlClient, client) ) ) ) diff --git a/packages/sql-sqlite-bun/src/Migrator.ts b/packages/sql-sqlite-bun/src/SqliteMigrator.ts similarity index 88% rename from packages/sql-sqlite-bun/src/Migrator.ts rename to packages/sql-sqlite-bun/src/SqliteMigrator.ts index bad55f70f1..16373d0f15 100644 --- a/packages/sql-sqlite-bun/src/Migrator.ts +++ b/packages/sql-sqlite-bun/src/SqliteMigrator.ts @@ -5,12 +5,12 @@ import * as Command from "@effect/platform/Command" import type { CommandExecutor } from "@effect/platform/CommandExecutor" import { FileSystem } from "@effect/platform/FileSystem" import { Path } from "@effect/platform/Path" -import type * as Client from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" import * as Migrator from "@effect/sql/Migrator" +import type * as Client from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import * as Effect from "effect/Effect" import * as Layer from "effect/Layer" -import { SqliteClient } from "./Client.js" +import { SqliteClient } from "./SqliteClient.js" /** * @since 1.0.0 @@ -31,7 +31,7 @@ export const run: ( ) => Effect.Effect< ReadonlyArray, Migrator.MigrationError | SqlError, - FileSystem | Path | SqliteClient | Client.Client | CommandExecutor | R2 + FileSystem | Path | SqliteClient | Client.SqlClient | CommandExecutor | R2 > = Migrator.make({ dumpSchema(path, table) { const dump = (args: Array) => @@ -85,5 +85,5 @@ export const layer = ( ): Layer.Layer< never, SqlError | Migrator.MigrationError, - SqliteClient | Client.Client | CommandExecutor | FileSystem | Path | R + SqliteClient | Client.SqlClient | CommandExecutor | FileSystem | Path | R > => Layer.effectDiscard(run(options)) diff --git a/packages/sql-sqlite-bun/src/index.ts b/packages/sql-sqlite-bun/src/index.ts index 8aacdc4a12..2b60db36d4 100644 --- a/packages/sql-sqlite-bun/src/index.ts +++ b/packages/sql-sqlite-bun/src/index.ts @@ -1,13 +1,9 @@ /** * @since 1.0.0 */ +export * as SqliteClient from "./SqliteClient.js" /** * @since 1.0.0 */ -export * as client from "./Client.js" - -/** - * @since 1.0.0 - */ -export * as migrator from "./Migrator.js" +export * as SqliteMigrator from "./SqliteMigrator.js" diff --git a/packages/sql-sqlite-node/package.json b/packages/sql-sqlite-node/package.json index 4b33944803..f8de608745 100644 --- a/packages/sql-sqlite-node/package.json +++ b/packages/sql-sqlite-node/package.json @@ -29,6 +29,7 @@ "provenance": true }, "scripts": { + "codegen": "build-utils prepare-v2", "build": "pnpm build-esm && pnpm build-cjs && pnpm build-annotate && build-utils pack-v2", "build-esm": "tsc -b tsconfig.build.json", "build-cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps", diff --git a/packages/sql-sqlite-node/src/Client.ts b/packages/sql-sqlite-node/src/SqliteClient.ts similarity index 95% rename from packages/sql-sqlite-node/src/Client.ts rename to packages/sql-sqlite-node/src/SqliteClient.ts index fb39583a45..f76b11d774 100644 --- a/packages/sql-sqlite-node/src/Client.ts +++ b/packages/sql-sqlite-node/src/SqliteClient.ts @@ -1,9 +1,9 @@ /** * @since 1.0.0 */ -import * as Client from "@effect/sql/Client" -import type { Connection } from "@effect/sql/Connection" -import { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import type { Connection } from "@effect/sql/SqlConnection" +import { SqlError } from "@effect/sql/SqlError" import * as Statement from "@effect/sql/Statement" import * as Otel from "@opentelemetry/semantic-conventions" import Sqlite from "better-sqlite3" @@ -21,7 +21,7 @@ import * as Scope from "effect/Scope" * @category type ids * @since 1.0.0 */ -export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-node/Client") +export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-node/SqliteClient") /** * @category type ids @@ -33,7 +33,7 @@ export type TypeId = typeof TypeId * @category models * @since 1.0.0 */ -export interface SqliteClient extends Client.Client { +export interface SqliteClient extends Client.SqlClient { readonly [TypeId]: TypeId readonly config: SqliteClientConfig readonly export: Effect.Effect @@ -57,7 +57,7 @@ export interface BackupMetadata { * @category tags * @since 1.0.0 */ -export const SqliteClient = Context.GenericTag("@effect/sql-sqlite-node/Client") +export const SqliteClient = Context.GenericTag("@effect/sql-sqlite-node/SqliteClient") /** * @category models @@ -246,13 +246,13 @@ export const make = ( */ export const layer = ( config: Config.Config.Wrap -): Layer.Layer => +): Layer.Layer => Layer.scopedContext( Config.unwrap(config).pipe( Effect.flatMap(make), Effect.map((client) => Context.make(SqliteClient, client).pipe( - Context.add(Client.Client, client) + Context.add(Client.SqlClient, client) ) ) ) diff --git a/packages/sql-sqlite-node/src/Migrator.ts b/packages/sql-sqlite-node/src/SqliteMigrator.ts similarity index 88% rename from packages/sql-sqlite-node/src/Migrator.ts rename to packages/sql-sqlite-node/src/SqliteMigrator.ts index 1cf264cbf1..d4aee63bcd 100644 --- a/packages/sql-sqlite-node/src/Migrator.ts +++ b/packages/sql-sqlite-node/src/SqliteMigrator.ts @@ -5,12 +5,12 @@ import * as Command from "@effect/platform/Command" import type { CommandExecutor } from "@effect/platform/CommandExecutor" import { FileSystem } from "@effect/platform/FileSystem" import { Path } from "@effect/platform/Path" -import type * as Client from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" import * as Migrator from "@effect/sql/Migrator" +import type * as Client from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import * as Effect from "effect/Effect" import * as Layer from "effect/Layer" -import { SqliteClient } from "./Client.js" +import { SqliteClient } from "./SqliteClient.js" /** * @since 1.0.0 @@ -31,7 +31,7 @@ export const run: ( ) => Effect.Effect< ReadonlyArray, Migrator.MigrationError | SqlError, - FileSystem | Path | SqliteClient | Client.Client | CommandExecutor | R2 + FileSystem | Path | SqliteClient | Client.SqlClient | CommandExecutor | R2 > = Migrator.make({ dumpSchema(path, table) { const dump = (args: Array) => @@ -85,5 +85,5 @@ export const layer = ( ): Layer.Layer< never, SqlError | Migrator.MigrationError, - SqliteClient | Client.Client | CommandExecutor | FileSystem | Path | R + SqliteClient | Client.SqlClient | CommandExecutor | FileSystem | Path | R > => Layer.effectDiscard(run(options)) diff --git a/packages/sql-sqlite-node/src/index.ts b/packages/sql-sqlite-node/src/index.ts index 8aacdc4a12..2b60db36d4 100644 --- a/packages/sql-sqlite-node/src/index.ts +++ b/packages/sql-sqlite-node/src/index.ts @@ -1,13 +1,9 @@ /** * @since 1.0.0 */ +export * as SqliteClient from "./SqliteClient.js" /** * @since 1.0.0 */ -export * as client from "./Client.js" - -/** - * @since 1.0.0 - */ -export * as migrator from "./Migrator.js" +export * as SqliteMigrator from "./SqliteMigrator.js" diff --git a/packages/sql-sqlite-node/test/Client.test.ts b/packages/sql-sqlite-node/test/Client.test.ts index aef4b90b00..dbda3e6268 100644 --- a/packages/sql-sqlite-node/test/Client.test.ts +++ b/packages/sql-sqlite-node/test/Client.test.ts @@ -1,13 +1,13 @@ import { FileSystem } from "@effect/platform" import { NodeFileSystem } from "@effect/platform-node" -import * as Sqlite from "@effect/sql-sqlite-node" +import { SqliteClient } from "@effect/sql-sqlite-node" import { assert, describe, it } from "@effect/vitest" import { Effect } from "effect" const makeClient = Effect.gen(function*(_) { const fs = yield* _(FileSystem.FileSystem) const dir = yield* _(fs.makeTempDirectoryScoped()) - return yield* _(Sqlite.client.make({ + return yield* _(SqliteClient.make({ filename: dir + "/test.db" })) }).pipe(Effect.provide(NodeFileSystem.layer)) diff --git a/packages/sql-sqlite-node/test/Resolver.test.ts b/packages/sql-sqlite-node/test/Resolver.test.ts index 56d989996b..a945b0f43e 100644 --- a/packages/sql-sqlite-node/test/Resolver.test.ts +++ b/packages/sql-sqlite-node/test/Resolver.test.ts @@ -1,15 +1,15 @@ import { FileSystem } from "@effect/platform" import { NodeFileSystem } from "@effect/platform-node" import * as Schema from "@effect/schema/Schema" -import * as Sql from "@effect/sql" -import * as Sqlite from "@effect/sql-sqlite-node" +import { SqlError, SqlResolver } from "@effect/sql" +import { SqliteClient } from "@effect/sql-sqlite-node" import { assert, describe, it } from "@effect/vitest" import { Array, Effect, Option } from "effect" const makeClient = Effect.gen(function*(_) { const fs = yield* _(FileSystem.FileSystem) const dir = yield* _(fs.makeTempDirectoryScoped()) - return yield* _(Sqlite.client.make({ + return yield* _(SqliteClient.make({ filename: dir + "/test.db" })) }).pipe(Effect.provide(NodeFileSystem.layer)) @@ -29,7 +29,7 @@ describe("Resolver", () => { Effect.gen(function*(_) { const batches: Array> = [] const sql = yield* _(seededClient) - const Insert = yield* _(Sql.resolver.ordered("Insert", { + const Insert = yield* _(SqlResolver.ordered("Insert", { Request: Schema.String, Result: Schema.Struct({ id: Schema.Number, name: Schema.String }), execute: (names) => { @@ -54,7 +54,7 @@ describe("Resolver", () => { Effect.gen(function*(_) { const batches: Array> = [] const sql = yield* _(seededClient) - const Select = yield* _(Sql.resolver.ordered("Select", { + const Select = yield* _(SqlResolver.ordered("Select", { Request: Schema.Number, Result: Schema.Struct({ id: Schema.Number, name: Schema.String }), execute: (ids) => { @@ -71,7 +71,7 @@ describe("Resolver", () => { ], { batching: true }), Effect.flip ) - assert(error instanceof Sql.error.ResultLengthMismatch) + assert(error instanceof SqlError.ResultLengthMismatch) assert.strictEqual(error.actual, 3) assert.strictEqual(error.expected, 4) assert.deepStrictEqual(batches, [[1, 2, 3, 101]]) @@ -82,7 +82,7 @@ describe("Resolver", () => { it.scoped("find by name", () => Effect.gen(function*(_) { const sql = yield* _(seededClient) - const FindByName = yield* _(Sql.resolver.grouped("FindByName", { + const FindByName = yield* _(SqlResolver.grouped("FindByName", { Request: Schema.String, RequestGroupKey: (name) => name, Result: Schema.Struct({ id: Schema.Number, name: Schema.String }), @@ -107,7 +107,7 @@ describe("Resolver", () => { it.scoped("using raw rows", () => Effect.gen(function*(_) { const sql = yield* _(seededClient) - const FindByName = yield* _(Sql.resolver.grouped("FindByName", { + const FindByName = yield* _(SqlResolver.grouped("FindByName", { Request: Schema.String, RequestGroupKey: (name) => name, Result: Schema.Struct({ id: Schema.Number, name: Schema.String }), @@ -134,7 +134,7 @@ describe("Resolver", () => { it.scoped("find by id", () => Effect.gen(function*(_) { const sql = yield* _(seededClient) - const FindById = yield* _(Sql.resolver.findById("FindById", { + const FindById = yield* _(SqlResolver.findById("FindById", { Id: Schema.Number, Result: Schema.Struct({ id: Schema.Number, name: Schema.String }), ResultId: (result) => result.id, @@ -157,7 +157,7 @@ describe("Resolver", () => { it.scoped("using raw rows", () => Effect.gen(function*(_) { const sql = yield* _(seededClient) - const FindById = yield* _(Sql.resolver.findById("FindById", { + const FindById = yield* _(SqlResolver.findById("FindById", { Id: Schema.Number, Result: Schema.Struct({ id: Schema.Number, name: Schema.String }), ResultId: (_, result: any) => result.id, diff --git a/packages/sql-sqlite-react-native/package.json b/packages/sql-sqlite-react-native/package.json index 37f36b1bb9..006a45e595 100644 --- a/packages/sql-sqlite-react-native/package.json +++ b/packages/sql-sqlite-react-native/package.json @@ -29,6 +29,7 @@ "provenance": true }, "scripts": { + "codegen": "build-utils prepare-v2", "build": "pnpm build-esm && pnpm build-cjs && pnpm build-annotate && build-utils pack-v2", "build-esm": "tsc -b tsconfig.build.json", "build-cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps", diff --git a/packages/sql-sqlite-react-native/src/Client.ts b/packages/sql-sqlite-react-native/src/SqliteClient.ts similarity index 94% rename from packages/sql-sqlite-react-native/src/Client.ts rename to packages/sql-sqlite-react-native/src/SqliteClient.ts index 614d8dbe63..f2f26ea2c3 100644 --- a/packages/sql-sqlite-react-native/src/Client.ts +++ b/packages/sql-sqlite-react-native/src/SqliteClient.ts @@ -1,9 +1,9 @@ /** * @since 1.0.0 */ -import * as Client from "@effect/sql/Client" -import type { Connection } from "@effect/sql/Connection" -import { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import type { Connection } from "@effect/sql/SqlConnection" +import { SqlError } from "@effect/sql/SqlError" import * as Statement from "@effect/sql/Statement" import * as Sqlite from "@op-engineering/op-sqlite" import * as Otel from "@opentelemetry/semantic-conventions" @@ -23,7 +23,7 @@ import * as Stream from "effect/Stream" * @category type ids * @since 1.0.0 */ -export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-react-native/Client") +export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-react-native/SqliteClient") /** * @category type ids @@ -35,7 +35,7 @@ export type TypeId = typeof TypeId * @category models * @since 1.0.0 */ -export interface SqliteClient extends Client.Client { +export interface SqliteClient extends Client.SqlClient { readonly [TypeId]: TypeId readonly config: SqliteClientConfig readonly reactive: ( @@ -54,7 +54,7 @@ export interface SqliteClient extends Client.Client { * @category tags * @since 1.0.0 */ -export const SqliteClient = Context.GenericTag("@effect/sql-sqlite-react-native/Client") +export const SqliteClient = Context.GenericTag("@effect/sql-sqlite-react-native/SqliteClient") /** * @category models @@ -258,13 +258,13 @@ export const make = ( */ export const layer = ( config: Config.Config.Wrap -): Layer.Layer => +): Layer.Layer => Layer.scopedContext( Config.unwrap(config).pipe( Effect.flatMap(make), Effect.map((client) => Context.make(SqliteClient, client).pipe( - Context.add(Client.Client, client) + Context.add(Client.SqlClient, client) ) ) ) diff --git a/packages/sql-sqlite-react-native/src/Migrator.ts b/packages/sql-sqlite-react-native/src/SqliteMigrator.ts similarity index 77% rename from packages/sql-sqlite-react-native/src/Migrator.ts rename to packages/sql-sqlite-react-native/src/SqliteMigrator.ts index 5f3a9e5c45..2f8acd2e93 100644 --- a/packages/sql-sqlite-react-native/src/Migrator.ts +++ b/packages/sql-sqlite-react-native/src/SqliteMigrator.ts @@ -1,9 +1,9 @@ /** * @since 1.0.0 */ -import type * as Client from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" import * as Migrator from "@effect/sql/Migrator" +import type * as Client from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import type * as Effect from "effect/Effect" import * as Layer from "effect/Layer" @@ -21,7 +21,7 @@ export const run: ( ) => Effect.Effect< ReadonlyArray, SqlError | Migrator.MigrationError, - Client.Client | R + Client.SqlClient | R > = Migrator.make({}) /** @@ -30,4 +30,4 @@ export const run: ( */ export const layer = ( options: Migrator.MigratorOptions -): Layer.Layer => Layer.effectDiscard(run(options)) +): Layer.Layer => Layer.effectDiscard(run(options)) diff --git a/packages/sql-sqlite-react-native/src/index.ts b/packages/sql-sqlite-react-native/src/index.ts index 8aacdc4a12..2b60db36d4 100644 --- a/packages/sql-sqlite-react-native/src/index.ts +++ b/packages/sql-sqlite-react-native/src/index.ts @@ -1,13 +1,9 @@ /** * @since 1.0.0 */ +export * as SqliteClient from "./SqliteClient.js" /** * @since 1.0.0 */ -export * as client from "./Client.js" - -/** - * @since 1.0.0 - */ -export * as migrator from "./Migrator.js" +export * as SqliteMigrator from "./SqliteMigrator.js" diff --git a/packages/sql-sqlite-wasm/src/Client.ts b/packages/sql-sqlite-wasm/src/SqliteClient.ts similarity index 93% rename from packages/sql-sqlite-wasm/src/Client.ts rename to packages/sql-sqlite-wasm/src/SqliteClient.ts index 7bc80c405e..82f73a704c 100644 --- a/packages/sql-sqlite-wasm/src/Client.ts +++ b/packages/sql-sqlite-wasm/src/SqliteClient.ts @@ -1,9 +1,9 @@ /** * @since 1.0.0 */ -import * as Client from "@effect/sql/Client" -import type { Connection } from "@effect/sql/Connection" -import { SqlError } from "@effect/sql/Error" +import * as Client from "@effect/sql/SqlClient" +import type { Connection } from "@effect/sql/SqlConnection" +import { SqlError } from "@effect/sql/SqlError" import * as Statement from "@effect/sql/Statement" import * as Otel from "@opentelemetry/semantic-conventions" import type { DB, OpenMode, RowMode } from "@sqlite.org/sqlite-wasm" @@ -20,7 +20,7 @@ import * as Scope from "effect/Scope" * @category type ids * @since 1.0.0 */ -export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-wasm/Client") +export const TypeId: unique symbol = Symbol.for("@effect/sql-sqlite-wasm/SqliteClient") /** * @category type ids @@ -32,7 +32,7 @@ export type TypeId = typeof TypeId * @category models * @since 1.0.0 */ -export interface SqliteClient extends Client.Client { +export interface SqliteClient extends Client.SqlClient { readonly [TypeId]: TypeId readonly config: SqliteClientConfig readonly export: Effect.Effect @@ -45,7 +45,7 @@ export interface SqliteClient extends Client.Client { * @category tags * @since 1.0.0 */ -export const SqliteClient = Context.GenericTag("@effect/sql-sqlite-wasm/Client") +export const SqliteClient = Context.GenericTag("@effect/sql-sqlite-wasm/SqliteClient") /** * @category models @@ -192,13 +192,13 @@ export const make = ( */ export const layer = ( config: Config.Config.Wrap -): Layer.Layer => +): Layer.Layer => Layer.scopedContext( Config.unwrap(config).pipe( Effect.flatMap(make), Effect.map((client) => Context.make(SqliteClient, client).pipe( - Context.add(Client.Client, client) + Context.add(Client.SqlClient, client) ) ) ) diff --git a/packages/sql-sqlite-wasm/src/Migrator.ts b/packages/sql-sqlite-wasm/src/SqliteMigrator.ts similarity index 77% rename from packages/sql-sqlite-wasm/src/Migrator.ts rename to packages/sql-sqlite-wasm/src/SqliteMigrator.ts index 5f3a9e5c45..2f8acd2e93 100644 --- a/packages/sql-sqlite-wasm/src/Migrator.ts +++ b/packages/sql-sqlite-wasm/src/SqliteMigrator.ts @@ -1,9 +1,9 @@ /** * @since 1.0.0 */ -import type * as Client from "@effect/sql/Client" -import type { SqlError } from "@effect/sql/Error" import * as Migrator from "@effect/sql/Migrator" +import type * as Client from "@effect/sql/SqlClient" +import type { SqlError } from "@effect/sql/SqlError" import type * as Effect from "effect/Effect" import * as Layer from "effect/Layer" @@ -21,7 +21,7 @@ export const run: ( ) => Effect.Effect< ReadonlyArray, SqlError | Migrator.MigrationError, - Client.Client | R + Client.SqlClient | R > = Migrator.make({}) /** @@ -30,4 +30,4 @@ export const run: ( */ export const layer = ( options: Migrator.MigratorOptions -): Layer.Layer => Layer.effectDiscard(run(options)) +): Layer.Layer => Layer.effectDiscard(run(options)) diff --git a/packages/sql-sqlite-wasm/src/index.ts b/packages/sql-sqlite-wasm/src/index.ts index 8aacdc4a12..2b60db36d4 100644 --- a/packages/sql-sqlite-wasm/src/index.ts +++ b/packages/sql-sqlite-wasm/src/index.ts @@ -1,13 +1,9 @@ /** * @since 1.0.0 */ +export * as SqliteClient from "./SqliteClient.js" /** * @since 1.0.0 */ -export * as client from "./Client.js" - -/** - * @since 1.0.0 - */ -export * as migrator from "./Migrator.js" +export * as SqliteMigrator from "./SqliteMigrator.js" diff --git a/packages/sql/package.json b/packages/sql/package.json index 2481cfd910..f96584f10c 100644 --- a/packages/sql/package.json +++ b/packages/sql/package.json @@ -31,6 +31,7 @@ "provenance": true }, "scripts": { + "codegen": "build-utils prepare-v2", "build": "pnpm build-esm && pnpm build-cjs && pnpm build-annotate && build-utils pack-v2", "build-esm": "tsc -b tsconfig.build.json", "build-cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps", diff --git a/packages/sql/src/Migrator.ts b/packages/sql/src/Migrator.ts index 212618c3f7..619fe12d8a 100644 --- a/packages/sql/src/Migrator.ts +++ b/packages/sql/src/Migrator.ts @@ -7,8 +7,8 @@ import * as Effect from "effect/Effect" import { pipe } from "effect/Function" import * as Option from "effect/Option" import * as Order from "effect/Order" -import * as Client from "./Client.js" -import type { SqlError } from "./Error.js" +import * as Client from "./SqlClient.js" +import type { SqlError } from "./SqlError.js" /** * @category model @@ -84,10 +84,10 @@ export const make = ({ }: MigratorOptions): Effect.Effect< ReadonlyArray, MigrationError | SqlError, - Client.Client | RD | R2 + Client.SqlClient | RD | R2 > => Effect.gen(function*(_) { - const sql = yield* Client.Client + const sql = yield* Client.SqlClient const ensureMigrationsTable = sql.onDialect({ mssql: () => sql`IF OBJECT_ID(N'${sql.literal(table)}', N'U') IS NULL diff --git a/packages/sql/src/Client.ts b/packages/sql/src/SqlClient.ts similarity index 86% rename from packages/sql/src/Client.ts rename to packages/sql/src/SqlClient.ts index e5263ee847..b81edf891d 100644 --- a/packages/sql/src/Client.ts +++ b/packages/sql/src/SqlClient.ts @@ -4,9 +4,9 @@ import type { Tag } from "effect/Context" import type { Effect } from "effect/Effect" import type { Scope } from "effect/Scope" -import type { Connection } from "./Connection.js" -import type { SqlError } from "./Error.js" import * as internal from "./internal/client.js" +import type { Connection } from "./SqlConnection.js" +import type { SqlError } from "./SqlError.js" import type { Compiler, Constructor } from "./Statement.js" /** @@ -25,7 +25,7 @@ export type TypeId = typeof TypeId * @category models * @since 1.0.0 */ -export interface Client extends Constructor { +export interface SqlClient extends Constructor { readonly [TypeId]: TypeId /** @@ -47,13 +47,13 @@ export interface Client extends Constructor { * @category models * @since 1.0.0 */ -export const Client: Tag = internal.clientTag +export const SqlClient: Tag = internal.clientTag /** * @category models * @since 1.0.0 */ -export namespace Client { +export namespace SqlClient { /** * @category models * @since 1.0.0 @@ -83,7 +83,7 @@ export const make: ({ rollbackSavepoint, savepoint, transactionAcquirer -}: Client.MakeOptions) => Client = internal.make +}: SqlClient.MakeOptions) => SqlClient = internal.make /** * @since 1.0.0 diff --git a/packages/sql/src/Connection.ts b/packages/sql/src/SqlConnection.ts similarity index 96% rename from packages/sql/src/Connection.ts rename to packages/sql/src/SqlConnection.ts index 1f3ac6639a..68272a7367 100644 --- a/packages/sql/src/Connection.ts +++ b/packages/sql/src/SqlConnection.ts @@ -5,7 +5,7 @@ import * as Context from "effect/Context" import type { Effect } from "effect/Effect" import type { Scope } from "effect/Scope" import type { Stream } from "effect/Stream" -import type { SqlError } from "./Error.js" +import type { SqlError } from "./SqlError.js" import type { Primitive } from "./Statement.js" /** diff --git a/packages/sql/src/Error.ts b/packages/sql/src/SqlError.ts similarity index 98% rename from packages/sql/src/Error.ts rename to packages/sql/src/SqlError.ts index 1fb46123e9..305708cef5 100644 --- a/packages/sql/src/Error.ts +++ b/packages/sql/src/SqlError.ts @@ -7,7 +7,7 @@ import * as Predicate from "effect/Predicate" /** * @since 1.0.0 */ -export const SqlErrorTypeId: unique symbol = Symbol.for("@effect/sql/Error") +export const SqlErrorTypeId: unique symbol = Symbol.for("@effect/sql/SqlError") /** * @since 1.0.0 diff --git a/packages/sql/src/Resolver.ts b/packages/sql/src/SqlResolver.ts similarity index 98% rename from packages/sql/src/Resolver.ts rename to packages/sql/src/SqlResolver.ts index e96dedce91..1a3dd9ea27 100644 --- a/packages/sql/src/Resolver.ts +++ b/packages/sql/src/SqlResolver.ts @@ -15,8 +15,8 @@ import * as Request from "effect/Request" import * as RequestResolver from "effect/RequestResolver" import * as Tracer from "effect/Tracer" import type * as Types from "effect/Types" -import { ResultLengthMismatch } from "./Error.js" import * as internalClient from "./internal/client.js" +import { ResultLengthMismatch } from "./SqlError.js" /** * @since 1.0.0 @@ -252,7 +252,7 @@ export const ordered = } - ).identified(`@effect/sql/Resolver.ordered/${tag}`) + ).identified(`@effect/sql/SqlResolver.ordered/${tag}`) return makeResolver(resolver, tag, options.Request, options.withContext) } @@ -332,7 +332,7 @@ export const grouped = } - ).identified(`@effect/sql/Resolver.grouped/${tag}`) + ).identified(`@effect/sql/SqlResolver.grouped/${tag}`) return makeResolver(resolver, tag, options.Request, options.withContext) } @@ -411,7 +411,7 @@ export const findById = } - ).identified(`@effect/sql/Resolver.findById/${tag}`) + ).identified(`@effect/sql/SqlResolver.findById/${tag}`) return makeResolver(resolver, tag, options.Id, options.withContext) } const void_ = ( @@ -458,7 +458,7 @@ const void_ = ( }) ) as Effect.Effect } - ).identified(`@effect/sql/Resolver.void/${tag}`) + ).identified(`@effect/sql/SqlResolver.void/${tag}`) return makeResolver(resolver, tag, options.Request, options.withContext) } diff --git a/packages/sql/src/Schema.ts b/packages/sql/src/SqlSchema.ts similarity index 100% rename from packages/sql/src/Schema.ts rename to packages/sql/src/SqlSchema.ts diff --git a/packages/sql/src/Stream.ts b/packages/sql/src/SqlStream.ts similarity index 100% rename from packages/sql/src/Stream.ts rename to packages/sql/src/SqlStream.ts diff --git a/packages/sql/src/Statement.ts b/packages/sql/src/Statement.ts index 64ebb42f7e..92f88cd372 100644 --- a/packages/sql/src/Statement.ts +++ b/packages/sql/src/Statement.ts @@ -9,9 +9,9 @@ import type * as Option from "effect/Option" import type { Pipeable } from "effect/Pipeable" import type * as Stream from "effect/Stream" import type * as Tracer from "effect/Tracer" -import type { Connection, Row } from "./Connection.js" -import type { SqlError } from "./Error.js" import * as internal from "./internal/statement.js" +import type { Connection, Row } from "./SqlConnection.js" +import type { SqlError } from "./SqlError.js" /** * @category type id diff --git a/packages/sql/src/index.ts b/packages/sql/src/index.ts index c42d30944b..946b23d598 100644 --- a/packages/sql/src/index.ts +++ b/packages/sql/src/index.ts @@ -1,39 +1,39 @@ /** * @since 1.0.0 */ -export * as client from "./Client.js" +export * as Migrator from "./Migrator.js" /** * @since 1.0.0 */ -export * as connection from "./Connection.js" +export * as SqlClient from "./SqlClient.js" /** * @since 1.0.0 */ -export * as error from "./Error.js" +export * as SqlConnection from "./SqlConnection.js" /** * @since 1.0.0 */ -export * as migrator from "./Migrator.js" +export * as SqlError from "./SqlError.js" /** * @since 1.0.0 */ -export * as resolver from "./Resolver.js" +export * as SqlResolver from "./SqlResolver.js" /** * @since 1.0.0 */ -export * as schema from "./Schema.js" +export * as SqlSchema from "./SqlSchema.js" /** * @since 1.0.0 */ -export * as statement from "./Statement.js" +export * as SqlStream from "./SqlStream.js" /** * @since 1.0.0 */ -export * as stream from "./Stream.js" +export * as Statement from "./Statement.js" diff --git a/packages/sql/src/internal/client.ts b/packages/sql/src/internal/client.ts index 5ca7c04bc3..ff023c1afb 100644 --- a/packages/sql/src/internal/client.ts +++ b/packages/sql/src/internal/client.ts @@ -7,22 +7,22 @@ import * as FiberRef from "effect/FiberRef" import * as Option from "effect/Option" import * as Scope from "effect/Scope" import * as Tracer from "effect/Tracer" -import type * as Client from "../Client.js" -import type * as Connection from "../Connection.js" -import type * as Error from "../Error.js" +import type * as Client from "../SqlClient.js" +import type * as Connection from "../SqlConnection.js" +import type * as Error from "../SqlError.js" import * as Statement from "../Statement.js" /** @internal */ -export const TypeId: Client.TypeId = Symbol.for("@effect/sql/Client") as Client.TypeId +export const TypeId: Client.TypeId = Symbol.for("@effect/sql/SqlClient") as Client.TypeId /** @internal */ -export const clientTag = Context.GenericTag("@effect/sql/Client") +export const clientTag = Context.GenericTag("@effect/sql/SqlClient") /** @internal */ export const TransactionConnection = Context.GenericTag< Client.TransactionConnection, readonly [conn: Connection.Connection, counter: number] ->("@effect/sql/Client/TransactionConnection") +>("@effect/sql/SqlClient/TransactionConnection") /** @internal */ export function make({ @@ -35,7 +35,7 @@ export function make({ savepoint = (id) => `SAVEPOINT ${id}`, spanAttributes, transactionAcquirer -}: Client.Client.MakeOptions): Client.Client { +}: Client.SqlClient.MakeOptions): Client.SqlClient { const getConnection = Effect.flatMap( Effect.serviceOption(TransactionConnection), Option.match({ @@ -110,7 +110,7 @@ export function make({ ) ) - const client: Client.Client = Object.assign( + const client: Client.SqlClient = Object.assign( Statement.make(getConnection, compiler, spanAttributes), { [TypeId as Client.TypeId]: TypeId as Client.TypeId, diff --git a/packages/sql/src/internal/statement.ts b/packages/sql/src/internal/statement.ts index c5e02751e7..034b3a78d8 100644 --- a/packages/sql/src/internal/statement.ts +++ b/packages/sql/src/internal/statement.ts @@ -9,8 +9,8 @@ import * as Option from "effect/Option" import * as Predicate from "effect/Predicate" import type { Scope } from "effect/Scope" import * as Stream from "effect/Stream" -import type * as Connection from "../Connection.js" -import type * as Error from "../Error.js" +import type * as Connection from "../SqlConnection.js" +import type * as Error from "../SqlError.js" import type * as Statement from "../Statement.js" /** @internal */