query.ts — drizzle-orm Source File
Architecture documentation for query.ts, a typescript file in the drizzle-orm codebase. 7 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4["query.ts"] 143ae12b_ee90_0583_ca71_70602b28741f["expo-sqlite"] dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4 --> 143ae12b_ee90_0583_ca71_70602b28741f d4d235b8_5320_ab49_32b1_655b9b8a9a32["react"] dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4 --> d4d235b8_5320_ab49_32b1_655b9b8a9a32 27705a9d_afe9_57dd_8c97_e52d8a67d426["entity.ts"] dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4 --> 27705a9d_afe9_57dd_8c97_e52d8a67d426 be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd["sql.ts"] dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4 --> be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd c9460fa2_b68e_584b_2be3_a4db38ea6f7c["index.ts"] dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4 --> c9460fa2_b68e_584b_2be3_a4db38ea6f7c 348331c0_e3b7_152b_0e5c_e64fb42ff3c8["query.ts"] dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4 --> 348331c0_e3b7_152b_0e5c_e64fb42ff3c8 4d55618d_fa7b_8e54_edb2_b85ae393d95b["subquery.ts"] dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4 --> 4d55618d_fa7b_8e54_edb2_b85ae393d95b style dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { addDatabaseChangeListener } from 'expo-sqlite';
import { useEffect, useState } from 'react';
import { is } from '~/entity.ts';
import { SQL } from '~/sql/sql.ts';
import type { AnySQLiteSelect } from '~/sqlite-core/index.ts';
import { getTableConfig, getViewConfig, SQLiteTable, SQLiteView } from '~/sqlite-core/index.ts';
import { SQLiteRelationalQuery } from '~/sqlite-core/query-builders/query.ts';
import { Subquery } from '~/subquery.ts';
export const useLiveQuery = <T extends Pick<AnySQLiteSelect, '_' | 'then'> | SQLiteRelationalQuery<'sync', unknown>>(
query: T,
deps: unknown[] = [],
) => {
const [data, setData] = useState<Awaited<T>>(
(is(query, SQLiteRelationalQuery) && query.mode === 'first' ? undefined : []) as Awaited<T>,
);
const [error, setError] = useState<Error>();
const [updatedAt, setUpdatedAt] = useState<Date>();
useEffect(() => {
const entity = is(query, SQLiteRelationalQuery) ? query.table : (query as AnySQLiteSelect).config.table;
if (is(entity, Subquery) || is(entity, SQL)) {
setError(new Error('Selecting from subqueries and SQL are not supported in useLiveQuery'));
return;
}
let listener: ReturnType<typeof addDatabaseChangeListener> | undefined;
const handleData = (data: any) => {
setData(data);
setUpdatedAt(new Date());
};
query.then(handleData).catch(setError);
if (is(entity, SQLiteTable) || is(entity, SQLiteView)) {
const config = is(entity, SQLiteTable) ? getTableConfig(entity) : getViewConfig(entity);
listener = addDatabaseChangeListener(({ tableName }) => {
if (config.name === tableName) {
query.then(handleData).catch(setError);
}
});
}
return () => {
listener?.remove();
};
}, deps);
return {
data,
error,
updatedAt,
} as const;
};
Domain
Subdomains
Functions
Dependencies
- entity.ts
- expo-sqlite
- index.ts
- query.ts
- react
- sql.ts
- subquery.ts
Source
Frequently Asked Questions
What does query.ts do?
query.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleORM domain, QueryBuilders subdomain.
What functions are defined in query.ts?
query.ts defines 1 function(s): useLiveQuery.
What does query.ts depend on?
query.ts imports 7 module(s): entity.ts, expo-sqlite, index.ts, query.ts, react, sql.ts, subquery.ts.
Where is query.ts in the architecture?
query.ts is located at drizzle-orm/src/expo-sqlite/query.ts (domain: DrizzleORM, subdomain: QueryBuilders, directory: drizzle-orm/src/expo-sqlite).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free