useLiveQuery() — drizzle-orm Function Reference
Architecture documentation for the useLiveQuery() function in query.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 0e712925_b864_aeb7_ffa7_c459c5421ecb["useLiveQuery()"] dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4["query.ts"] 0e712925_b864_aeb7_ffa7_c459c5421ecb -->|defined in| dbbab1b3_c73e_3fd1_8375_b9dba33fa8f4 style 0e712925_b864_aeb7_ffa7_c459c5421ecb fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-orm/src/expo-sqlite/query.ts lines 10–56
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
Defined In
Source
Frequently Asked Questions
What does useLiveQuery() do?
useLiveQuery() is a function in the drizzle-orm codebase, defined in drizzle-orm/src/expo-sqlite/query.ts.
Where is useLiveQuery() defined?
useLiveQuery() is defined in drizzle-orm/src/expo-sqlite/query.ts at line 10.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free