view.cjs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. "use strict";
  2. var __defProp = Object.defineProperty;
  3. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  4. var __getOwnPropNames = Object.getOwnPropertyNames;
  5. var __hasOwnProp = Object.prototype.hasOwnProperty;
  6. var __export = (target, all) => {
  7. for (var name in all)
  8. __defProp(target, name, { get: all[name], enumerable: true });
  9. };
  10. var __copyProps = (to, from, except, desc) => {
  11. if (from && typeof from === "object" || typeof from === "function") {
  12. for (let key of __getOwnPropNames(from))
  13. if (!__hasOwnProp.call(to, key) && key !== except)
  14. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  15. }
  16. return to;
  17. };
  18. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  19. var view_exports = {};
  20. __export(view_exports, {
  21. ManualViewBuilder: () => ManualViewBuilder,
  22. SQLiteView: () => SQLiteView,
  23. ViewBuilder: () => ViewBuilder,
  24. ViewBuilderCore: () => ViewBuilderCore,
  25. sqliteView: () => sqliteView,
  26. view: () => view
  27. });
  28. module.exports = __toCommonJS(view_exports);
  29. var import_entity = require("../entity.cjs");
  30. var import_selection_proxy = require("../selection-proxy.cjs");
  31. var import_utils = require("../utils.cjs");
  32. var import_query_builder = require("./query-builders/query-builder.cjs");
  33. var import_table = require("./table.cjs");
  34. var import_view_base = require("./view-base.cjs");
  35. class ViewBuilderCore {
  36. constructor(name) {
  37. this.name = name;
  38. }
  39. static [import_entity.entityKind] = "SQLiteViewBuilderCore";
  40. config = {};
  41. }
  42. class ViewBuilder extends ViewBuilderCore {
  43. static [import_entity.entityKind] = "SQLiteViewBuilder";
  44. as(qb) {
  45. if (typeof qb === "function") {
  46. qb = qb(new import_query_builder.QueryBuilder());
  47. }
  48. const selectionProxy = new import_selection_proxy.SelectionProxyHandler({
  49. alias: this.name,
  50. sqlBehavior: "error",
  51. sqlAliasedBehavior: "alias",
  52. replaceOriginalName: true
  53. });
  54. const aliasedSelectedFields = qb.getSelectedFields();
  55. return new Proxy(
  56. new SQLiteView({
  57. // sqliteConfig: this.config,
  58. config: {
  59. name: this.name,
  60. schema: void 0,
  61. selectedFields: aliasedSelectedFields,
  62. query: qb.getSQL().inlineParams()
  63. }
  64. }),
  65. selectionProxy
  66. );
  67. }
  68. }
  69. class ManualViewBuilder extends ViewBuilderCore {
  70. static [import_entity.entityKind] = "SQLiteManualViewBuilder";
  71. columns;
  72. constructor(name, columns) {
  73. super(name);
  74. this.columns = (0, import_utils.getTableColumns)((0, import_table.sqliteTable)(name, columns));
  75. }
  76. existing() {
  77. return new Proxy(
  78. new SQLiteView({
  79. config: {
  80. name: this.name,
  81. schema: void 0,
  82. selectedFields: this.columns,
  83. query: void 0
  84. }
  85. }),
  86. new import_selection_proxy.SelectionProxyHandler({
  87. alias: this.name,
  88. sqlBehavior: "error",
  89. sqlAliasedBehavior: "alias",
  90. replaceOriginalName: true
  91. })
  92. );
  93. }
  94. as(query) {
  95. return new Proxy(
  96. new SQLiteView({
  97. config: {
  98. name: this.name,
  99. schema: void 0,
  100. selectedFields: this.columns,
  101. query: query.inlineParams()
  102. }
  103. }),
  104. new import_selection_proxy.SelectionProxyHandler({
  105. alias: this.name,
  106. sqlBehavior: "error",
  107. sqlAliasedBehavior: "alias",
  108. replaceOriginalName: true
  109. })
  110. );
  111. }
  112. }
  113. class SQLiteView extends import_view_base.SQLiteViewBase {
  114. static [import_entity.entityKind] = "SQLiteView";
  115. constructor({ config }) {
  116. super(config);
  117. }
  118. }
  119. function sqliteView(name, selection) {
  120. if (selection) {
  121. return new ManualViewBuilder(name, selection);
  122. }
  123. return new ViewBuilder(name);
  124. }
  125. const view = sqliteView;
  126. // Annotate the CommonJS export names for ESM import in node:
  127. 0 && (module.exports = {
  128. ManualViewBuilder,
  129. SQLiteView,
  130. ViewBuilder,
  131. ViewBuilderCore,
  132. sqliteView,
  133. view
  134. });
  135. //# sourceMappingURL=view.cjs.map