driver.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { entityKind } from "../entity.js";
  2. import { DefaultLogger } from "../logger.js";
  3. import { createTableRelationsHelpers, extractTablesRelationalConfig } from "../relations.js";
  4. import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
  5. import { SQLiteAsyncDialect } from "../sqlite-core/dialect.js";
  6. import { SQLiteRemoteSession } from "./session.js";
  7. class SqliteRemoteDatabase extends BaseSQLiteDatabase {
  8. static [entityKind] = "SqliteRemoteDatabase";
  9. async batch(batch) {
  10. return this.session.batch(batch);
  11. }
  12. }
  13. function drizzle(callback, batchCallback, config) {
  14. const dialect = new SQLiteAsyncDialect({ casing: config?.casing });
  15. let logger;
  16. let cache;
  17. let _batchCallback;
  18. let _config = {};
  19. if (batchCallback) {
  20. if (typeof batchCallback === "function") {
  21. _batchCallback = batchCallback;
  22. _config = config ?? {};
  23. } else {
  24. _batchCallback = void 0;
  25. _config = batchCallback;
  26. }
  27. if (_config.logger === true) {
  28. logger = new DefaultLogger();
  29. } else if (_config.logger !== false) {
  30. logger = _config.logger;
  31. cache = _config.cache;
  32. }
  33. }
  34. let schema;
  35. if (_config.schema) {
  36. const tablesConfig = extractTablesRelationalConfig(
  37. _config.schema,
  38. createTableRelationsHelpers
  39. );
  40. schema = {
  41. fullSchema: _config.schema,
  42. schema: tablesConfig.tables,
  43. tableNamesMap: tablesConfig.tableNamesMap
  44. };
  45. }
  46. const session = new SQLiteRemoteSession(callback, dialect, schema, _batchCallback, { logger, cache });
  47. const db = new SqliteRemoteDatabase("async", dialect, session, schema);
  48. db.$cache = cache;
  49. if (db.$cache) {
  50. db.$cache["invalidate"] = cache?.onMutate;
  51. }
  52. return db;
  53. }
  54. export {
  55. SqliteRemoteDatabase,
  56. drizzle
  57. };
  58. //# sourceMappingURL=driver.js.map