MCPcopy Create free account
hub / github.com/Effect-TS/effect / make

Function make

packages/effect/src/unstable/eventlog/SqlEventJournal.ts:34–283  ·  view source on GitHub ↗
(options?: {
  readonly entryTable?: string
  readonly remotesTable?: string
})

Source from the content-addressed store, hash-verified

32 * @since 4.0.0
33 */
34export const make = (options?: {
35 readonly entryTable?: string
36 readonly remotesTable?: string
37}): Effect.Effect<
38 EventJournal.EventJournal["Service"],
39 SqlError.SqlError,
40 SqlClient.SqlClient
41> =>
42 Effect.gen(function*() {
43 const sql = (yield* SqlClient.SqlClient).withoutTransforms()
44
45 const entryTable = options?.entryTable ?? "effect_event_journal"
46 const remotesTable = options?.remotesTable ?? "effect_event_remotes"
47
48 const entryTableSql = sql(entryTable)
49 const remotesTableSql = sql(remotesTable)
50
51 yield* sql.onDialectOrElse({
52 pg: () =>
53 sql`
54 CREATE TABLE IF NOT EXISTS ${entryTableSql} (
55 id UUID PRIMARY KEY,
56 event TEXT NOT NULL,
57 primary_key TEXT NOT NULL,
58 payload BYTEA NOT NULL,
59 timestamp BIGINT NOT NULL
60 )`,
61 mysql: () =>
62 sql`
63 CREATE TABLE IF NOT EXISTS ${entryTableSql} (
64 id BINARY(16) PRIMARY KEY,
65 event TEXT NOT NULL,
66 primary_key TEXT NOT NULL,
67 payload BLOB NOT NULL,
68 timestamp BIGINT NOT NULL
69 )`,
70 mssql: () =>
71 sql`
72 CREATE TABLE IF NOT EXISTS ${entryTableSql} (
73 id UNIQUEIDENTIFIER PRIMARY KEY,
74 event NVARCHAR(MAX) NOT NULL,
75 primary_key NVARCHAR(MAX) NOT NULL,
76 payload VARBINARY(MAX) NOT NULL,
77 timestamp BIGINT NOT NULL
78 )`,
79 orElse: () =>
80 sql`
81 CREATE TABLE IF NOT EXISTS ${entryTableSql} (
82 id BLOB PRIMARY KEY,
83 event TEXT NOT NULL,
84 primary_key TEXT NOT NULL,
85 payload BLOB NOT NULL,
86 timestamp INTEGER NOT NULL
87 )`
88 }).pipe(withTracerDisabled)
89
90 yield* sql.onDialectOrElse({
91 pg: () =>

Callers 1

layerFunction · 0.70

Calls 13

toEntryRowFunction · 0.85
filterMethod · 0.80
pipeMethod · 0.65
addMethod · 0.65
ofMethod · 0.65
publishMethod · 0.65
subscribeMethod · 0.65
fFunction · 0.50
NumberInterface · 0.50
mapMethod · 0.45
syncMethod · 0.45
hasMethod · 0.45

Tested by

no test coverage detected