CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
query.js47 linesDownload Raw Back to expo-sqlite
1import { addDatabaseChangeListener } from "expo-sqlite";2import { useEffect, useState } from "react";3import { is } from "../entity.js";4import { SQL } from "../sql/sql.js";5import { getTableConfig, getViewConfig, SQLiteTable, SQLiteView } from "../sqlite-core/index.js";6import { SQLiteRelationalQuery } from "../sqlite-core/query-builders/query.js";7import { Subquery } from "../subquery.js";8const useLiveQuery = (query, deps = []) => {9  const [data, setData] = useState(10    is(query, SQLiteRelationalQuery) && query.mode === "first" ? void 0 : []11  );12  const [error, setError] = useState();13  const [updatedAt, setUpdatedAt] = useState();14  useEffect(() => {15    const entity = is(query, SQLiteRelationalQuery) ? query.table : query.config.table;16    if (is(entity, Subquery) || is(entity, SQL)) {17      setError(new Error("Selecting from subqueries and SQL are not supported in useLiveQuery"));18      return;19    }20    let listener;21    const handleData = (data2) => {22      setData(data2);23      setUpdatedAt(/* @__PURE__ */ new Date());24    };25    query.then(handleData).catch(setError);26    if (is(entity, SQLiteTable) || is(entity, SQLiteView)) {27      const config = is(entity, SQLiteTable) ? getTableConfig(entity) : getViewConfig(entity);28      listener = addDatabaseChangeListener(({ tableName }) => {29        if (config.name === tableName) {30          query.then(handleData).catch(setError);31        }32      });33    }34    return () => {35      listener?.remove();36    };37  }, deps);38  return {39    data,40    error,41    updatedAt42  };43};44export {45  useLiveQuery46};47//# sourceMappingURL=query.js.map