Buckets:
| /* oxlint-disable */ | |
| import type * as Effect from "effect/Effect" | |
| import { applyEffectWrapper, type QueryEffectHKTBase } from "drizzle-orm/effect-core/query-effect" | |
| import { entityKind } from "drizzle-orm/entity" | |
| import { SQL, sql, type SQLWrapper } from "drizzle-orm/sql/sql" | |
| import type { SQLiteTable } from "drizzle-orm/sqlite-core/table" | |
| import type { SQLiteView } from "drizzle-orm/sqlite-core/view" | |
| import type { SQLiteEffectSession } from "./session" | |
| function buildSQLiteEmbeddedCount(source: SQLiteTable | SQLiteView | SQL | SQLWrapper, filters?: SQL<unknown>) { | |
| return sql<number>`(select count(*) from ${source}${sql.raw(" where ").if(filters)}${filters})` | |
| } | |
| function buildSQLiteCount(source: SQLiteTable | SQLiteView | SQL | SQLWrapper, filters?: SQL<unknown>) { | |
| return sql<number>`select count(*) from ${source}${sql.raw(" where ").if(filters)}${filters}` | |
| } | |
| export interface SQLiteEffectCountBuilder<TEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase> | |
| extends SQL<number>, | |
| SQLWrapper<number>, | |
| Effect.Effect<number, TEffectHKT["error"], TEffectHKT["context"]> {} | |
| export class SQLiteEffectCountBuilder<TEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase> extends SQL<number> { | |
| static override readonly [entityKind]: string = "SQLiteEffectCountBuilder" | |
| private sql: SQL<number> | |
| private session: SQLiteEffectSession<TEffectHKT, any, any> | |
| constructor(params: { | |
| source: SQLiteTable | SQLiteView | SQL | SQLWrapper | |
| filters?: SQL<unknown> | |
| session: SQLiteEffectSession<TEffectHKT, any, any> | |
| }) { | |
| super(buildSQLiteEmbeddedCount(params.source, params.filters).queryChunks) | |
| this.session = params.session | |
| this.sql = buildSQLiteCount(params.source, params.filters) | |
| } | |
| execute(placeholderValues?: Record<string, unknown>) { | |
| return this.session | |
| .prepareQuery<{ | |
| type: "async" | |
| execute: number | |
| run: unknown | |
| all: unknown | |
| get: unknown | |
| values: unknown | |
| }>(this.session.dialect.sqlToQuery(this.sql), undefined, "all", (rows) => { | |
| const v = rows[0]?.[0] | |
| if (typeof v === "number") return v | |
| return v ? Number(v) : 0 | |
| }) | |
| .execute(placeholderValues) | |
| } | |
| } | |
| applyEffectWrapper(SQLiteEffectCountBuilder) | |
Xet Storage Details
- Size:
- 2.26 kB
- Xet hash:
- 71e2d5ac3dcce9ded37bbc8243c3d6e76769cee19500e9292e8246a51e93243b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.