Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

restructure sql modules to have flat imports #3035

Merged
merged 1 commit into from
Jun 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .changeset/forty-crews-bow.md
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions packages/cluster-workflow/src/DurableExecutionJournal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -66,7 +66,7 @@ export const DurableExecutionJournal = Context.GenericTag<DurableExecutionJourna
*/
export const make = ({ table }: DurableExecutionJournal.MakeOptions) =>
Effect.gen(function*() {
const sql = yield* SqlClient.Client
const sql = yield* SqlClient.SqlClient

yield* sql.onDialect({
mssql: () =>
Expand Down
10 changes: 5 additions & 5 deletions packages/cluster-workflow/test/DurableExecutionJournal.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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(
Expand All @@ -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
Expand All @@ -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(
Expand Down
6 changes: 3 additions & 3 deletions packages/cluster/src/AtLeastOnceStorage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -93,4 +93,4 @@ export declare namespace AtLeastOnceStorage {
*/
export const layer: (
options: AtLeastOnceStorage.MakeOptions
) => Layer<AtLeastOnceStorage, SqlError, Client | Serialization> = Internal.layer
) => Layer<AtLeastOnceStorage, SqlError, SqlClient | Serialization> = Internal.layer
12 changes: 6 additions & 6 deletions packages/cluster/src/internal/atLeastOnceStorage.ts
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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({
Expand Down Expand Up @@ -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))
14 changes: 7 additions & 7 deletions packages/cluster/test/AtLeastOnce.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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(
Expand All @@ -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
Expand All @@ -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

Expand All @@ -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

Expand Down Expand Up @@ -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

Expand Down
8 changes: 4 additions & 4 deletions packages/sql-drizzle/examples/sqlite.ts
Original file line number Diff line number Diff line change
@@ -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(
Expand All @@ -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)
Expand Down
10 changes: 5 additions & 5 deletions packages/sql-drizzle/src/Mysql.ts
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -16,8 +16,8 @@ import { makeRemoteCallback, patch, registerDialect } from "./internal/patch.js"
* @since 1.0.0
* @category constructors
*/
export const make: Effect.Effect<MySqlRemoteDatabase, never, Client.Client> = Effect.gen(function*() {
const client = yield* Client.Client
export const make: Effect.Effect<MySqlRemoteDatabase, never, Client.SqlClient> = Effect.gen(function*() {
const client = yield* Client.SqlClient
const db = drizzle(yield* makeRemoteCallback)
registerDialect((db as any).dialect, client)
return db
Expand All @@ -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<MysqlDrizzle, never, Client.Client> = Layer.effect(MysqlDrizzle, make)
export const layer: Layer.Layer<MysqlDrizzle, never, Client.SqlClient> = Layer.effect(MysqlDrizzle, make)

// patch

Expand Down
10 changes: 5 additions & 5 deletions packages/sql-drizzle/src/Pg.ts
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -16,8 +16,8 @@ import { makeRemoteCallback, patch, registerDialect } from "./internal/patch.js"
* @since 1.0.0
* @category constructors
*/
export const make: Effect.Effect<PgRemoteDatabase, never, Client.Client> = Effect.gen(function*() {
const client = yield* Client.Client
export const make: Effect.Effect<PgRemoteDatabase, never, Client.SqlClient> = Effect.gen(function*() {
const client = yield* Client.SqlClient
const db = drizzle(yield* makeRemoteCallback)
registerDialect((db as any).dialect, client)
return db
Expand All @@ -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<PgDrizzle, never, Client.Client> = Layer.effect(PgDrizzle, make)
export const layer: Layer.Layer<PgDrizzle, never, Client.SqlClient> = Layer.effect(PgDrizzle, make)

// patch

Expand Down
10 changes: 5 additions & 5 deletions packages/sql-drizzle/src/Sqlite.ts
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -17,8 +17,8 @@ import { makeRemoteCallback, patch, registerDialect } from "./internal/patch.js"
* @since 1.0.0
* @category constructors
*/
export const make: Effect.Effect<SqliteRemoteDatabase, never, Client.Client | Scope> = Effect.gen(function*() {
const client = yield* Client.Client
export const make: Effect.Effect<SqliteRemoteDatabase, never, Client.SqlClient | Scope> = Effect.gen(function*() {
const client = yield* Client.SqlClient
const db = drizzle(yield* makeRemoteCallback)
registerDialect((db as any).dialect, client)
return db
Expand All @@ -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<SqliteDrizzle, never, Client.Client> = Layer.scoped(SqliteDrizzle, make)
export const layer: Layer.Layer<SqliteDrizzle, never, Client.SqlClient> = Layer.scoped(SqliteDrizzle, make)

// patch

Expand Down
10 changes: 5 additions & 5 deletions packages/sql-drizzle/src/internal/patch.ts
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -10,11 +10,11 @@ import * as Runtime from "effect/Runtime"

const clientRegistry = globalValue(
"@effect/sql-drizzle/clientRegistry",
() => new WeakMap<any, Client.Client>()
() => new WeakMap<any, Client.SqlClient>()
)

/** @internal */
export const registerDialect = (dialect: unknown, client: Client.Client) => {
export const registerDialect = (dialect: unknown, client: Client.SqlClient) => {
clientRegistry.set(dialect, client)
}

Expand Down Expand Up @@ -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<never>()
const runPromise = Runtime.runPromise(runtime)
return (sql: string, params: Array<any>, method: "all" | "execute" | "get" | "values" | "run") => {
Expand Down
6 changes: 3 additions & 3 deletions packages/sql-drizzle/test/Mysql.test.ts
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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)`
Expand All @@ -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" }))
Expand Down
6 changes: 3 additions & 3 deletions packages/sql-drizzle/test/Pg.test.ts
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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)`
Expand All @@ -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" }))
Expand Down
Loading