Skip to content
Open
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
12 changes: 12 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM oven/bun:debian

# Config Bun
ENV PATH="~/.bun/bin:${PATH}"
RUN ln -s /usr/local/bin/bun /usr/local/bin/node

# Update packages
RUN if [ "debian" == "alpine" ] ; then apk update ; else apt-get update ; fi

# Install Git
RUN if [ "debian" == "alpine" ] ; then apk add git ; else apt-get install -y git ; fi

16 changes: 16 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/marcosgomesneto/bun-devcontainers/tree/main/src/basic-bun
{
"name": "Bun",
"dockerFile": "Dockerfile",
// Configure tool-specific properties.
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"oven.bun-vscode"
]
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>LCOV - opencode-lcov.info - ../effect-drizzle-sqlite/src/effect-sqlite/driver.ts</title>
<link rel="stylesheet" type="text/css" href="../../../../gcov.css">
</head>

<body>

<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr><td class="title">LCOV - code coverage report</td></tr>
<tr><td class="ruler"><img src="../../../../glass.png" width=3 height=3 alt=""></td></tr>

<tr>
<td width="100%">
<table cellpadding=1 border=0 width="100%">
<tr>
<td width="10%" class="headerItem">Current view:</td>
<td width="10%" class="headerValue"><a href="../../../../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory ../effect-drizzle-sqlite/src/effect-sqlite">../effect-drizzle-sqlite/src/effect-sqlite</a> - driver.ts</td>
<td width="5%"></td>
<td width="5%"></td>
<td width="5%" class="headerCovTableHead">Coverage</td>
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
</tr>
<tr>
<td class="headerItem">Test:</td>
<td class="headerValue">opencode-lcov.info</td>
<td></td>
<td class="headerItem">Lines:</td>
<td class="headerCovTableEntryHi">100.0&nbsp;%</td>
<td class="headerCovTableEntry">36</td>
<td class="headerCovTableEntry">36</td>
</tr>
<tr>
<td class="headerItem">Test Date:</td>
<td class="headerValue">2026-08-28 03:27:30</td>
<td></td>
<td class="headerItem">Functions:</td>
<td class="headerCovTableEntryHi">-</td>
<td class="headerCovTableEntry">0</td>
<td class="headerCovTableEntry">0</td>
</tr>
<tr><td><img src="../../../../glass.png" width=3 height=3 alt=""></td></tr>
</table>
</td>
</tr>

<tr><td class="ruler"><img src="../../../../glass.png" width=3 height=3 alt=""></td></tr>
</table>

<table cellpadding=0 cellspacing=0 border=0>
<tr>
<td><br></td>
</tr>
<tr>
<td>
<pre class="sourceHeading"> Line data Source code</pre>
<pre class="source">
<span id="L1"><span class="lineNum"> 1</span> : /* oxlint-disable */</span>
<span id="L2"><span class="lineNum"> 2</span> <span class="tlaGNC"> 42 : import * as Effect from &quot;effect/Effect&quot;</span></span>
<span id="L3"><span class="lineNum"> 3</span> <span class="tlaGNC"> 76 : import * as Layer from &quot;effect/Layer&quot;</span></span>
<span id="L4"><span class="lineNum"> 4</span> <span class="tlaGNC"> 116 : import { SqlClient } from &quot;effect/unstable/sql/SqlClient&quot;</span></span>
<span id="L5"><span class="lineNum"> 5</span> <span class="tlaGNC"> 132 : import { EffectCache } from &quot;drizzle-orm/cache/core/cache-effect&quot;</span></span>
<span id="L6"><span class="lineNum"> 6</span> <span class="tlaGNC"> 110 : import { EffectLogger } from &quot;drizzle-orm/effect-core&quot;</span></span>
<span id="L7"><span class="lineNum"> 7</span> <span class="tlaGNC"> 96 : import { entityKind } from &quot;drizzle-orm/entity&quot;</span></span>
<span id="L8"><span class="lineNum"> 8</span> : import type { AnyRelations, EmptyRelations } from &quot;drizzle-orm/relations&quot;</span>
<span id="L9"><span class="lineNum"> 9</span> <span class="tlaGNC"> 138 : import { SQLiteAsyncDialect } from &quot;drizzle-orm/sqlite-core/dialect&quot;</span></span>
<span id="L10"><span class="lineNum"> 10</span> <span class="tlaGNC"> 128 : import { SQLiteEffectDatabase } from &quot;../sqlite-core/effect/db&quot;</span></span>
<span id="L11"><span class="lineNum"> 11</span> : import type { DrizzleConfig } from &quot;drizzle-orm/utils&quot;</span>
<span id="L12"><span class="lineNum"> 12</span> <span class="tlaGNC"> 118 : import { jitCompatCheck } from &quot;../internal/drizzle-utils&quot;</span></span>
<span id="L13"><span class="lineNum"> 13</span> <span class="tlaGNC"> 96 : import { type EffectSQLiteQueryEffectHKT, type EffectSQLiteRunResult, EffectSQLiteSession } from &quot;./session&quot;</span></span>
<span id="L14"><span class="lineNum"> 14</span> : </span>
<span id="L15"><span class="lineNum"> 15</span> <span class="tlaGNC"> 124 : export class EffectSQLiteDatabase&lt;TRelations extends AnyRelations = EmptyRelations&gt; extends SQLiteEffectDatabase&lt;</span></span>
<span id="L16"><span class="lineNum"> 16</span> : EffectSQLiteQueryEffectHKT,</span>
<span id="L17"><span class="lineNum"> 17</span> : EffectSQLiteRunResult,</span>
<span id="L18"><span class="lineNum"> 18</span> : TRelations</span>
<span id="L19"><span class="lineNum"> 19</span> <span class="tlaGNC"> 22 : &gt; {</span></span>
<span id="L20"><span class="lineNum"> 20</span> <span class="tlaGNC"> 76 : static override readonly [entityKind]: string = &quot;EffectSQLiteDatabase&quot;</span></span>
<span id="L21"><span class="lineNum"> 21</span> <span class="tlaGNC"> 2 : }</span></span>
<span id="L22"><span class="lineNum"> 22</span> : </span>
<span id="L23"><span class="lineNum"> 23</span> : export type EffectDrizzleSQLiteConfig&lt;TRelations extends AnyRelations = EmptyRelations&gt; = Omit&lt;</span>
<span id="L24"><span class="lineNum"> 24</span> : DrizzleConfig&lt;Record&lt;string, never&gt;, TRelations&gt;,</span>
<span id="L25"><span class="lineNum"> 25</span> : &quot;cache&quot; | &quot;logger&quot; | &quot;schema&quot;</span>
<span id="L26"><span class="lineNum"> 26</span> : &gt;</span>
<span id="L27"><span class="lineNum"> 27</span> : </span>
<span id="L28"><span class="lineNum"> 28</span> <span class="tlaGNC"> 172 : export const DefaultServices = Layer.merge(EffectCache.Default, EffectLogger.Default)</span></span>
<span id="L29"><span class="lineNum"> 29</span> : </span>
<span id="L30"><span class="lineNum"> 30</span> : /**</span>
<span id="L31"><span class="lineNum"> 31</span> : * Creates an EffectSQLiteDatabase instance.</span>
<span id="L32"><span class="lineNum"> 32</span> : *</span>
<span id="L33"><span class="lineNum"> 33</span> : * Requires a generic Effect `SqlClient`, `EffectLogger`, and `EffectCache` services to be provided.</span>
<span id="L34"><span class="lineNum"> 34</span> : * Drizzle only depends on the generic `SqlClient`; install and provide a compatible SQLite provider such as</span>
<span id="L35"><span class="lineNum"> 35</span> : * `@effect/sql-sqlite-node`, `@effect/sql-sqlite-bun`, or another package that exposes `SqlClient`.</span>
<span id="L36"><span class="lineNum"> 36</span> : *</span>
<span id="L37"><span class="lineNum"> 37</span> : * @example</span>
<span id="L38"><span class="lineNum"> 38</span> : * ```ts</span>
<span id="L39"><span class="lineNum"> 39</span> : * import { SqliteClient } from '@effect/sql-sqlite-node';</span>
<span id="L40"><span class="lineNum"> 40</span> : * import * as SQLiteDrizzle from 'drizzle-orm/effect-sqlite';</span>
<span id="L41"><span class="lineNum"> 41</span> : * import * as Effect from 'effect/Effect';</span>
<span id="L42"><span class="lineNum"> 42</span> : *</span>
<span id="L43"><span class="lineNum"> 43</span> : * const db = yield* SQLiteDrizzle.make({ relations }).pipe(</span>
<span id="L44"><span class="lineNum"> 44</span> : * Effect.provide(SQLiteDrizzle.DefaultServices),</span>
<span id="L45"><span class="lineNum"> 45</span> : * Effect.provide(SqliteClient.layer({ filename: 'sqlite.db' })),</span>
<span id="L46"><span class="lineNum"> 46</span> : * );</span>
<span id="L47"><span class="lineNum"> 47</span> : * ```</span>
<span id="L48"><span class="lineNum"> 48</span> : */</span>
<span id="L49"><span class="lineNum"> 49</span> <span class="tlaGNC"> 113 : export const make = Effect.fn(&quot;SQLiteDrizzle.make&quot;)(function* &lt;TRelations extends AnyRelations = EmptyRelations&gt;(</span></span>
<span id="L50"><span class="lineNum"> 50</span> <span class="tlaGNC"> 25 : config: EffectDrizzleSQLiteConfig&lt;TRelations&gt; = {},</span></span>
<span id="L51"><span class="lineNum"> 51</span> <span class="tlaGNC"> 6 : ) {</span></span>
<span id="L52"><span class="lineNum"> 52</span> <span class="tlaGNC"> 68 : const client = yield* SqlClient</span></span>
<span id="L53"><span class="lineNum"> 53</span> <span class="tlaGNC"> 70 : const cache = yield* EffectCache</span></span>
<span id="L54"><span class="lineNum"> 54</span> <span class="tlaGNC"> 74 : const logger = yield* EffectLogger</span></span>
<span id="L55"><span class="lineNum"> 55</span> : </span>
<span id="L56"><span class="lineNum"> 56</span> <span class="tlaGNC"> 82 : const dialect = new SQLiteAsyncDialect()</span></span>
<span id="L57"><span class="lineNum"> 57</span> <span class="tlaGNC"> 86 : const relations = config.relations ?? ({} as TRelations)</span></span>
<span id="L58"><span class="lineNum"> 58</span> <span class="tlaGNC"> 146 : const session = new EffectSQLiteSession(client, dialect, relations, {</span></span>
<span id="L59"><span class="lineNum"> 59</span> <span class="tlaGNC"> 22 : logger,</span></span>
<span id="L60"><span class="lineNum"> 60</span> <span class="tlaGNC"> 20 : cache,</span></span>
<span id="L61"><span class="lineNum"> 61</span> <span class="tlaGNC"> 86 : useJitMappers: jitCompatCheck(config.jit),</span></span>
<span id="L62"><span class="lineNum"> 62</span> <span class="tlaGNC"> 10 : })</span></span>
<span id="L63"><span class="lineNum"> 63</span> <span class="tlaGNC"> 134 : const db = new EffectSQLiteDatabase(dialect, session, relations) as EffectSQLiteDatabase&lt;TRelations&gt; &amp; {</span></span>
<span id="L64"><span class="lineNum"> 64</span> : $client: SqlClient</span>
<span id="L65"><span class="lineNum"> 65</span> : }</span>
<span id="L66"><span class="lineNum"> 66</span> <span class="tlaGNC"> 44 : db.$client = client</span></span>
<span id="L67"><span class="lineNum"> 67</span> <span class="tlaGNC"> 80 : db.$cache.invalidate = cache.onMutate</span></span>
<span id="L68"><span class="lineNum"> 68</span> : </span>
<span id="L69"><span class="lineNum"> 69</span> <span class="tlaGNC"> 20 : return db</span></span>
<span id="L70"><span class="lineNum"> 70</span> <span class="tlaGNC"> 6 : })</span></span>
<span id="L71"><span class="lineNum"> 71</span> : </span>
<span id="L72"><span class="lineNum"> 72</span> : /**</span>
<span id="L73"><span class="lineNum"> 73</span> : * Convenience function that creates an EffectSQLiteDatabase with `DefaultServices` already provided.</span>
<span id="L74"><span class="lineNum"> 74</span> : */</span>
<span id="L75"><span class="lineNum"> 75</span> <span class="tlaGNC"> 63 : export const makeWithDefaults = &lt;TRelations extends AnyRelations = EmptyRelations&gt;(</span></span>
<span id="L76"><span class="lineNum"> 76</span> <span class="tlaGNC"> 32 : config: EffectDrizzleSQLiteConfig&lt;TRelations&gt; = {},</span></span>
<span id="L77"><span class="lineNum"> 77</span> <span class="tlaGNC"> 102 : ) =&gt; make(config).pipe(Effect.provide(DefaultServices))</span></span>
</pre>
</td>
</tr>
</table>
<br>

<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr><td class="ruler"><img src="../../../../glass.png" width=3 height=3 alt=""></td></tr>
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
</table>
<br>

</body>
</html>
Loading
Loading