@ragestudio/scylla-odm 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.d.mts CHANGED
@@ -6,7 +6,7 @@ import { Client as Client$1, mapping } from "cassandra-driver";
6
6
  declare class Client {
7
7
  constructor(config?: ClientConfig);
8
8
  config: ClientConfig;
9
- client: Client$1;
9
+ driver: Client$1;
10
10
  mapper: mapping.Mapper;
11
11
  models: Map<string, Model<any>>;
12
12
  initialize(options?: {
package/dist/client.mjs CHANGED
@@ -9,6 +9,8 @@ const DEFAULT_RETRY_DELAY = 1e3;
9
9
  const { SCYLLA_CONTACT_POINTS, SCYLLA_LOCAL_DATA_CENTER, SCYLLA_KEYSPACE } = process.env;
10
10
  var Client = class {
11
11
  constructor(config = {}) {
12
+ if (globalThis.__scylla_client) throw new Error("An instance of Scylla Client is already initialized");
13
+ globalThis.__scylla_client = this;
12
14
  this.config = {
13
15
  modelsPath: path.resolve(process.cwd(), "db"),
14
16
  contactPoints: config.contactPoints ?? SCYLLA_CONTACT_POINTS ? SCYLLA_CONTACT_POINTS.split(",") : ["127.0.0.1"],
@@ -26,10 +28,10 @@ var Client = class {
26
28
  protocolOptions: { port: this.config.port }
27
29
  };
28
30
  if (this.config.pooling) clientOptions.pooling = this.config.pooling;
29
- this.client = new Cassandra.Client(clientOptions);
31
+ this.driver = new Cassandra.Client(clientOptions);
30
32
  }
31
33
  config;
32
- client;
34
+ driver;
33
35
  mapper;
34
36
  models = /* @__PURE__ */ new Map();
35
37
  async initialize(options = {}) {
@@ -40,9 +42,8 @@ var Client = class {
40
42
  throw new Error(`Failed to load models: ${error.message}`);
41
43
  }
42
44
  models = models.filter((schema) => schema instanceof Model);
43
- this.mapper = new Cassandra.mapping.Mapper(this.client, { models: buildMapper_default(models) });
45
+ this.mapper = new Cassandra.mapping.Mapper(this.driver, { models: buildMapper_default(models) });
44
46
  for (let model of models) {
45
- model._connect(this);
46
47
  this.models.set(model.name, model);
47
48
  if (options?.sync === true) await model._sync();
48
49
  }
@@ -53,7 +54,7 @@ var Client = class {
53
54
  async connectWithRetry() {
54
55
  let lastError = null;
55
56
  for (let attempt = 1; attempt <= this.config.maxRetries; attempt++) try {
56
- await this.client.connect();
57
+ await this.driver.connect();
57
58
  return;
58
59
  } catch (error) {
59
60
  lastError = error;
@@ -70,7 +71,7 @@ var Client = class {
70
71
  }
71
72
  async shutdown() {
72
73
  try {
73
- await this.client.shutdown();
74
+ await this.driver.shutdown();
74
75
  console.log("ScyllaDB connection closed");
75
76
  } catch (error) {
76
77
  console.error("Error shutting down ScyllaDB connection:", error);
@@ -1 +1 @@
1
- {"version":3,"file":"client.mjs","names":["loadModels","buildMapper"],"sources":["../src/client.ts"],"sourcesContent":["import type {\n\tClient as T_CassandraClient,\n\tClientOptions as T_CassandraClientOptions,\n\tmapping as T_CassandraMapping,\n} from \"cassandra-driver\"\nimport type { ClientConfig } from \"./types\"\n\n//@ts-ignore\nimport path from \"node:path\"\n//@ts-ignore\nimport Cassandra from \"cassandra-driver\"\nimport loadModels from \"./utils/loadModels\"\nimport buildMapper from \"./utils/buildMapper\"\n\nimport { Model } from \"./model\"\nimport { InferDocument } from \"./types\"\n\nconst DEFAULT_MAX_RETRIES = 3\nconst DEFAULT_RETRY_DELAY = 1000\nconst { SCYLLA_CONTACT_POINTS, SCYLLA_LOCAL_DATA_CENTER, SCYLLA_KEYSPACE } =\n\tprocess.env\n\nexport class Client {\n\tconstructor(config: ClientConfig = {}) {\n\t\tthis.config = {\n\t\t\tmodelsPath: path.resolve(process.cwd(), \"db\"),\n\t\t\tcontactPoints:\n\t\t\t\t(config.contactPoints ?? SCYLLA_CONTACT_POINTS)\n\t\t\t\t\t? SCYLLA_CONTACT_POINTS.split(\",\")\n\t\t\t\t\t: [\"127.0.0.1\"],\n\t\t\tlocalDataCenter:\n\t\t\t\tconfig.localDataCenter ??\n\t\t\t\tSCYLLA_LOCAL_DATA_CENTER ??\n\t\t\t\t\"datacenter1\",\n\t\t\tkeyspace: config.keyspace ?? SCYLLA_KEYSPACE ?? \"default\",\n\t\t\tport: 9042,\n\t\t\tmaxRetries: DEFAULT_MAX_RETRIES,\n\t\t\tretryDelay: DEFAULT_RETRY_DELAY,\n\t\t\t...config,\n\t\t}\n\n\t\tconst clientOptions: T_CassandraClientOptions = {\n\t\t\tcontactPoints: this.config.contactPoints,\n\t\t\tlocalDataCenter: this.config.localDataCenter,\n\t\t\tkeyspace: this.config.keyspace,\n\t\t\tprotocolOptions: {\n\t\t\t\tport: this.config.port,\n\t\t\t},\n\t\t}\n\n\t\tif (this.config.pooling) {\n\t\t\tclientOptions.pooling = this.config.pooling\n\t\t}\n\n\t\tthis.client = new Cassandra.Client(clientOptions)\n\t}\n\n\tconfig: ClientConfig\n\tclient: T_CassandraClient\n\tmapper: T_CassandraMapping.Mapper\n\tmodels: Map<string, Model<any>> = new Map()\n\n\tasync initialize(options: { sync?: boolean } = {}) {\n\t\tlet models: Model<any>[]\n\n\t\ttry {\n\t\t\tmodels = await loadModels(this.config.modelsPath)\n\t\t} catch (error) {\n\t\t\tthrow new Error(`Failed to load models: ${error.message}`)\n\t\t}\n\n\t\tmodels = models.filter((schema) => schema instanceof Model)\n\n\t\tthis.mapper = new Cassandra.mapping.Mapper(this.client, {\n\t\t\tmodels: buildMapper(models),\n\t\t})\n\n\t\tfor (let model of models) {\n\t\t\tmodel._connect(this)\n\n\t\t\tthis.models.set(\n\t\t\t\tmodel.name,\n\t\t\t\tmodel as Model<InferDocument<typeof model.schema>>,\n\t\t\t)\n\n\t\t\tif (options?.sync === true) {\n\t\t\t\tawait model._sync()\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(\"Connecting to ScyllaDB\")\n\t\tawait this.connectWithRetry()\n\t\tconsole.log(\"ScyllaDB Connected\")\n\t}\n\n\tprivate async connectWithRetry(): Promise<void> {\n\t\tlet lastError: Error | null = null\n\n\t\tfor (let attempt = 1; attempt <= this.config.maxRetries!; attempt++) {\n\t\t\ttry {\n\t\t\t\tawait this.client.connect()\n\t\t\t\treturn\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`Connection attempt ${attempt} failed: ${error.message}`,\n\t\t\t\t)\n\n\t\t\t\tif (attempt < this.config.maxRetries!) {\n\t\t\t\t\tconsole.log(`Retrying in ${this.config.retryDelay}ms...`)\n\t\t\t\t\tawait this.delay(this.config.retryDelay!)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`Failed to connect to ScyllaDB after ${this.config.maxRetries} attempts: ${lastError?.message}`,\n\t\t)\n\t}\n\n\tprivate delay(ms: number): Promise<void> {\n\t\treturn new Promise((resolve) => setTimeout(resolve, ms))\n\t}\n\n\tasync shutdown(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.client.shutdown()\n\t\t\tconsole.log(\"ScyllaDB connection closed\")\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error shutting down ScyllaDB connection:\", error)\n\t\t\tthrow error\n\t\t}\n\t}\n\n\tasync executeWithRetry<T>(\n\t\toperation: () => Promise<T>,\n\t\toperationName: string = \"operation\",\n\t): Promise<T> {\n\t\tlet lastError: Error | null = null\n\n\t\tfor (let attempt = 1; attempt <= this.config.maxRetries!; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn await operation()\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error\n\n\t\t\t\t// check if error is retryable\n\t\t\t\tif (\n\t\t\t\t\tthis.isRetryableError(error) &&\n\t\t\t\t\tattempt < this.config.maxRetries!\n\t\t\t\t) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Operation ${operationName} attempt ${attempt} failed: ${error.message}`,\n\t\t\t\t\t)\n\t\t\t\t\tconsole.log(`Retrying in ${this.config.retryDelay}ms...`)\n\n\t\t\t\t\tawait this.delay(this.config.retryDelay!)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// if not retryable or last attempt, throw\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`Operation ${operationName} failed after ${this.config.maxRetries} attempts: ${lastError?.message}`,\n\t\t)\n\t}\n\n\tprivate isRetryableError(error: any): boolean {\n\t\t// retry on network errors, timeouts, and certain ScyllaDB errors\n\t\tconst retryableMessages = [\n\t\t\t\"timeout\",\n\t\t\t\"connection\",\n\t\t\t\"network\",\n\t\t\t\"unavailable\",\n\t\t\t\"overloaded\",\n\t\t\t\"no hosts available\",\n\t\t]\n\n\t\tconst errorMessage = error.message?.toLowerCase() || \"\"\n\n\t\treturn retryableMessages.some((msg) => errorMessage.includes(msg))\n\t}\n}\n\nexport default Client\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.mjs","names":["loadModels","buildMapper"],"sources":["../src/client.ts"],"sourcesContent":["import type {\n\tClient as T_CassandraClient,\n\tClientOptions as T_CassandraClientOptions,\n\tmapping as T_CassandraMapping,\n} from \"cassandra-driver\"\nimport type { ClientConfig } from \"./types\"\n\n//@ts-ignore\nimport path from \"node:path\"\n//@ts-ignore\nimport Cassandra from \"cassandra-driver\"\nimport loadModels from \"./utils/loadModels\"\nimport buildMapper from \"./utils/buildMapper\"\n\nimport { Model } from \"./model\"\nimport { InferDocument } from \"./types\"\n\nconst DEFAULT_MAX_RETRIES = 3\nconst DEFAULT_RETRY_DELAY = 1000\nconst { SCYLLA_CONTACT_POINTS, SCYLLA_LOCAL_DATA_CENTER, SCYLLA_KEYSPACE } =\n\tprocess.env\n\nexport class Client {\n\tconstructor(config: ClientConfig = {}) {\n\t\tif (globalThis.__scylla_client) {\n\t\t\tthrow new Error(\n\t\t\t\t\"An instance of Scylla Client is already initialized\",\n\t\t\t)\n\t\t}\n\n\t\tglobalThis.__scylla_client = this\n\n\t\tthis.config = {\n\t\t\tmodelsPath: path.resolve(process.cwd(), \"db\"),\n\t\t\tcontactPoints:\n\t\t\t\t(config.contactPoints ?? SCYLLA_CONTACT_POINTS)\n\t\t\t\t\t? SCYLLA_CONTACT_POINTS.split(\",\")\n\t\t\t\t\t: [\"127.0.0.1\"],\n\t\t\tlocalDataCenter:\n\t\t\t\tconfig.localDataCenter ??\n\t\t\t\tSCYLLA_LOCAL_DATA_CENTER ??\n\t\t\t\t\"datacenter1\",\n\t\t\tkeyspace: config.keyspace ?? SCYLLA_KEYSPACE ?? \"default\",\n\t\t\tport: 9042,\n\t\t\tmaxRetries: DEFAULT_MAX_RETRIES,\n\t\t\tretryDelay: DEFAULT_RETRY_DELAY,\n\t\t\t...config,\n\t\t}\n\n\t\tconst clientOptions: T_CassandraClientOptions = {\n\t\t\tcontactPoints: this.config.contactPoints,\n\t\t\tlocalDataCenter: this.config.localDataCenter,\n\t\t\tkeyspace: this.config.keyspace,\n\t\t\tprotocolOptions: {\n\t\t\t\tport: this.config.port,\n\t\t\t},\n\t\t}\n\n\t\tif (this.config.pooling) {\n\t\t\tclientOptions.pooling = this.config.pooling\n\t\t}\n\n\t\tthis.driver = new Cassandra.Client(clientOptions)\n\t}\n\n\tconfig: ClientConfig\n\tdriver: T_CassandraClient\n\tmapper: T_CassandraMapping.Mapper\n\tmodels: Map<string, Model<any>> = new Map()\n\n\tasync initialize(options: { sync?: boolean } = {}) {\n\t\tlet models: Model<any>[]\n\n\t\ttry {\n\t\t\tmodels = await loadModels(this.config.modelsPath)\n\t\t} catch (error) {\n\t\t\tthrow new Error(`Failed to load models: ${error.message}`)\n\t\t}\n\n\t\tmodels = models.filter((schema) => schema instanceof Model)\n\n\t\tthis.mapper = new Cassandra.mapping.Mapper(this.driver, {\n\t\t\tmodels: buildMapper(models),\n\t\t})\n\n\t\tfor (let model of models) {\n\t\t\tthis.models.set(\n\t\t\t\tmodel.name,\n\t\t\t\tmodel as Model<InferDocument<typeof model.schema>>,\n\t\t\t)\n\n\t\t\tif (options?.sync === true) {\n\t\t\t\tawait model._sync()\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(\"Connecting to ScyllaDB\")\n\t\tawait this.connectWithRetry()\n\t\tconsole.log(\"ScyllaDB Connected\")\n\t}\n\n\tprivate async connectWithRetry(): Promise<void> {\n\t\tlet lastError: Error | null = null\n\n\t\tfor (let attempt = 1; attempt <= this.config.maxRetries!; attempt++) {\n\t\t\ttry {\n\t\t\t\tawait this.driver.connect()\n\t\t\t\treturn\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`Connection attempt ${attempt} failed: ${error.message}`,\n\t\t\t\t)\n\n\t\t\t\tif (attempt < this.config.maxRetries!) {\n\t\t\t\t\tconsole.log(`Retrying in ${this.config.retryDelay}ms...`)\n\t\t\t\t\tawait this.delay(this.config.retryDelay!)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`Failed to connect to ScyllaDB after ${this.config.maxRetries} attempts: ${lastError?.message}`,\n\t\t)\n\t}\n\n\tprivate delay(ms: number): Promise<void> {\n\t\treturn new Promise((resolve) => setTimeout(resolve, ms))\n\t}\n\n\tasync shutdown(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.driver.shutdown()\n\t\t\tconsole.log(\"ScyllaDB connection closed\")\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error shutting down ScyllaDB connection:\", error)\n\t\t\tthrow error\n\t\t}\n\t}\n\n\tasync executeWithRetry<T>(\n\t\toperation: () => Promise<T>,\n\t\toperationName: string = \"operation\",\n\t): Promise<T> {\n\t\tlet lastError: Error | null = null\n\n\t\tfor (let attempt = 1; attempt <= this.config.maxRetries!; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn await operation()\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error\n\n\t\t\t\t// check if error is retryable\n\t\t\t\tif (\n\t\t\t\t\tthis.isRetryableError(error) &&\n\t\t\t\t\tattempt < this.config.maxRetries!\n\t\t\t\t) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Operation ${operationName} attempt ${attempt} failed: ${error.message}`,\n\t\t\t\t\t)\n\t\t\t\t\tconsole.log(`Retrying in ${this.config.retryDelay}ms...`)\n\n\t\t\t\t\tawait this.delay(this.config.retryDelay!)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// if not retryable or last attempt, throw\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`Operation ${operationName} failed after ${this.config.maxRetries} attempts: ${lastError?.message}`,\n\t\t)\n\t}\n\n\tprivate isRetryableError(error: any): boolean {\n\t\t// retry on network errors, timeouts, and certain ScyllaDB errors\n\t\tconst retryableMessages = [\n\t\t\t\"timeout\",\n\t\t\t\"connection\",\n\t\t\t\"network\",\n\t\t\t\"unavailable\",\n\t\t\t\"overloaded\",\n\t\t\t\"no hosts available\",\n\t\t]\n\n\t\tconst errorMessage = error.message?.toLowerCase() || \"\"\n\n\t\treturn retryableMessages.some((msg) => errorMessage.includes(msg))\n\t}\n}\n\nexport default Client\n"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  function create_table_default(model) {
3
3
  const desc = model.schema;
4
4
  const tableName = desc.table_name;
5
- const keyspace = model.driver.config.keyspace;
5
+ const keyspace = model.client.config.keyspace;
6
6
  const fields = desc.fields;
7
7
  const key = desc.keys;
8
8
  const clusteringOrder = desc.clustering_order;
@@ -1 +1 @@
1
- {"version":3,"file":"create_table.mjs","names":[],"sources":["../../src/cql_gen/create_table.ts"],"sourcesContent":["import type Model from \"../model\"\n\nexport default function (model: Model): string {\n\tconst desc = model.schema\n\tconst tableName = desc.table_name\n\tconst keyspace = model.driver.config.keyspace\n\tconst fields = desc.fields\n\tconst key = desc.keys\n\tconst clusteringOrder = desc.clustering_order\n\n\tlet columnsDef = \"\"\n\n\tfor (const fieldName in fields) {\n\t\tconst field = fields[fieldName]\n\t\tconst typeStr = typeof field === \"string\" ? field : (field as any)?.type\n\n\t\tif (!typeStr) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid field type for \"${fieldName}\" in model \"${tableName}\"`,\n\t\t\t)\n\t\t}\n\n\t\tcolumnsDef += `\"${fieldName}\" ${typeStr.toUpperCase()}, `\n\t}\n\n\tlet pkDef = \"\"\n\n\tif (typeof key === \"string\") {\n\t\tpkDef = `\"${key}\"`\n\t} else if (Array.isArray(key) && key.length > 0) {\n\t\tconst first = key[0]\n\n\t\tif (Array.isArray(first)) {\n\t\t\tpkDef = `(${first.map((k) => `\"${k}\"`).join(\", \")})`\n\t\t} else {\n\t\t\tpkDef = `\"${first}\"`\n\t\t}\n\n\t\tfor (let i = 1; i < key.length; i++) {\n\t\t\tpkDef += `, \"${key[i]}\"`\n\t\t}\n\t} else {\n\t\tthrow new Error(\n\t\t\t`Missing or invalid primary key in model \"${tableName}\"`,\n\t\t)\n\t}\n\n\tlet clusterClause = \"\"\n\n\tif (clusteringOrder) {\n\t\tlet orderDef = \"\"\n\n\t\tfor (const col in clusteringOrder) {\n\t\t\tif (orderDef !== \"\") {\n\t\t\t\torderDef += \", \"\n\t\t\t}\n\n\t\t\torderDef += `\"${col}\" ${(clusteringOrder[col] as string).toUpperCase()}`\n\t\t}\n\t\tif (orderDef !== \"\") {\n\t\t\tclusterClause = ` WITH CLUSTERING ORDER BY (${orderDef})`\n\t\t}\n\t}\n\n\treturn `CREATE TABLE IF NOT EXISTS ${keyspace}.${tableName} (${columnsDef}PRIMARY KEY (${pkDef}))${clusterClause}`\n}\n"],"mappings":";AAEA,SAAA,qBAAyB,OAAsB;CAC9C,MAAM,OAAO,MAAM;CACnB,MAAM,YAAY,KAAK;CACvB,MAAM,WAAW,MAAM,OAAO,OAAO;CACrC,MAAM,SAAS,KAAK;CACpB,MAAM,MAAM,KAAK;CACjB,MAAM,kBAAkB,KAAK;CAE7B,IAAI,aAAa;AAEjB,MAAK,MAAM,aAAa,QAAQ;EAC/B,MAAM,QAAQ,OAAO;EACrB,MAAM,UAAU,OAAO,UAAU,WAAW,QAAS,OAAe;AAEpE,MAAI,CAAC,QACJ,OAAM,IAAI,MACT,2BAA2B,UAAU,cAAc,UAAU,GAC7D;AAGF,gBAAc,IAAI,UAAU,IAAI,QAAQ,aAAa,CAAC;;CAGvD,IAAI,QAAQ;AAEZ,KAAI,OAAO,QAAQ,SAClB,SAAQ,IAAI,IAAI;UACN,MAAM,QAAQ,IAAI,IAAI,IAAI,SAAS,GAAG;EAChD,MAAM,QAAQ,IAAI;AAElB,MAAI,MAAM,QAAQ,MAAM,CACvB,SAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC;MAElD,SAAQ,IAAI,MAAM;AAGnB,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,IAC/B,UAAS,MAAM,IAAI,GAAG;OAGvB,OAAM,IAAI,MACT,4CAA4C,UAAU,GACtD;CAGF,IAAI,gBAAgB;AAEpB,KAAI,iBAAiB;EACpB,IAAI,WAAW;AAEf,OAAK,MAAM,OAAO,iBAAiB;AAClC,OAAI,aAAa,GAChB,aAAY;AAGb,eAAY,IAAI,IAAI,IAAK,gBAAgB,KAAgB,aAAa;;AAEvE,MAAI,aAAa,GAChB,iBAAgB,8BAA8B,SAAS;;AAIzD,QAAO,8BAA8B,SAAS,GAAG,UAAU,IAAI,WAAW,eAAe,MAAM,IAAI"}
1
+ {"version":3,"file":"create_table.mjs","names":[],"sources":["../../src/cql_gen/create_table.ts"],"sourcesContent":["import type Model from \"../model\"\n\nexport default function (model: Model): string {\n\tconst desc = model.schema\n\tconst tableName = desc.table_name\n\tconst keyspace = model.client.config.keyspace\n\tconst fields = desc.fields\n\tconst key = desc.keys\n\tconst clusteringOrder = desc.clustering_order\n\n\tlet columnsDef = \"\"\n\n\tfor (const fieldName in fields) {\n\t\tconst field = fields[fieldName]\n\t\tconst typeStr = typeof field === \"string\" ? field : (field as any)?.type\n\n\t\tif (!typeStr) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid field type for \"${fieldName}\" in model \"${tableName}\"`,\n\t\t\t)\n\t\t}\n\n\t\tcolumnsDef += `\"${fieldName}\" ${typeStr.toUpperCase()}, `\n\t}\n\n\tlet pkDef = \"\"\n\n\tif (typeof key === \"string\") {\n\t\tpkDef = `\"${key}\"`\n\t} else if (Array.isArray(key) && key.length > 0) {\n\t\tconst first = key[0]\n\n\t\tif (Array.isArray(first)) {\n\t\t\tpkDef = `(${first.map((k) => `\"${k}\"`).join(\", \")})`\n\t\t} else {\n\t\t\tpkDef = `\"${first}\"`\n\t\t}\n\n\t\tfor (let i = 1; i < key.length; i++) {\n\t\t\tpkDef += `, \"${key[i]}\"`\n\t\t}\n\t} else {\n\t\tthrow new Error(\n\t\t\t`Missing or invalid primary key in model \"${tableName}\"`,\n\t\t)\n\t}\n\n\tlet clusterClause = \"\"\n\n\tif (clusteringOrder) {\n\t\tlet orderDef = \"\"\n\n\t\tfor (const col in clusteringOrder) {\n\t\t\tif (orderDef !== \"\") {\n\t\t\t\torderDef += \", \"\n\t\t\t}\n\n\t\t\torderDef += `\"${col}\" ${(clusteringOrder[col] as string).toUpperCase()}`\n\t\t}\n\t\tif (orderDef !== \"\") {\n\t\t\tclusterClause = ` WITH CLUSTERING ORDER BY (${orderDef})`\n\t\t}\n\t}\n\n\treturn `CREATE TABLE IF NOT EXISTS ${keyspace}.${tableName} (${columnsDef}PRIMARY KEY (${pkDef}))${clusterClause}`\n}\n"],"mappings":";AAEA,SAAA,qBAAyB,OAAsB;CAC9C,MAAM,OAAO,MAAM;CACnB,MAAM,YAAY,KAAK;CACvB,MAAM,WAAW,MAAM,OAAO,OAAO;CACrC,MAAM,SAAS,KAAK;CACpB,MAAM,MAAM,KAAK;CACjB,MAAM,kBAAkB,KAAK;CAE7B,IAAI,aAAa;AAEjB,MAAK,MAAM,aAAa,QAAQ;EAC/B,MAAM,QAAQ,OAAO;EACrB,MAAM,UAAU,OAAO,UAAU,WAAW,QAAS,OAAe;AAEpE,MAAI,CAAC,QACJ,OAAM,IAAI,MACT,2BAA2B,UAAU,cAAc,UAAU,GAC7D;AAGF,gBAAc,IAAI,UAAU,IAAI,QAAQ,aAAa,CAAC;;CAGvD,IAAI,QAAQ;AAEZ,KAAI,OAAO,QAAQ,SAClB,SAAQ,IAAI,IAAI;UACN,MAAM,QAAQ,IAAI,IAAI,IAAI,SAAS,GAAG;EAChD,MAAM,QAAQ,IAAI;AAElB,MAAI,MAAM,QAAQ,MAAM,CACvB,SAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC;MAElD,SAAQ,IAAI,MAAM;AAGnB,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,IAC/B,UAAS,MAAM,IAAI,GAAG;OAGvB,OAAM,IAAI,MACT,4CAA4C,UAAU,GACtD;CAGF,IAAI,gBAAgB;AAEpB,KAAI,iBAAiB;EACpB,IAAI,WAAW;AAEf,OAAK,MAAM,OAAO,iBAAiB;AAClC,OAAI,aAAa,GAChB,aAAY;AAGb,eAAY,IAAI,IAAI,IAAK,gBAAgB,KAAgB,aAAa;;AAEvE,MAAI,aAAa,GAChB,iBAAgB,8BAA8B,SAAS;;AAIzD,QAAO,8BAA8B,SAAS,GAAG,UAAU,IAAI,WAAW,eAAe,MAAM,IAAI"}
@@ -9,8 +9,8 @@ import { mapping } from "cassandra-driver/lib/mapping/index.js";
9
9
  declare class Model<TDoc = any> {
10
10
  name: string;
11
11
  schema: Schema<any>;
12
- driver: Client;
13
- mapper: mapping.ModelMapper;
12
+ get client(): Client;
13
+ get mapper(): mapping.ModelMapper;
14
14
  constructor(name: string, schema: Schema<any>);
15
15
  create: (data: Partial<TDoc>) => DocumentResult<TDoc>;
16
16
  find: {
@@ -31,7 +31,6 @@ declare class Model<TDoc = any> {
31
31
  _sync: typeof syncOP;
32
32
  _tableExists: typeof export_default;
33
33
  _wrap(row: any): DocumentResult<TDoc> | null;
34
- _connect(driver: Client): void;
35
34
  }
36
35
  //#endregion
37
36
  export { Model, Model as default };
@@ -11,8 +11,12 @@ import syncOP from "../operations/sync.mjs";
11
11
  var Model = class {
12
12
  name;
13
13
  schema;
14
- driver;
15
- mapper;
14
+ get client() {
15
+ return globalThis.__scylla_client;
16
+ }
17
+ get mapper() {
18
+ return globalThis.__scylla_client?.mapper;
19
+ }
16
20
  constructor(name, schema) {
17
21
  this.name = name;
18
22
  this.schema = schema;
@@ -33,10 +37,6 @@ var Model = class {
33
37
  row = fillDefaults(this.schema, row);
34
38
  return new Result(row, this);
35
39
  }
36
- _connect(driver) {
37
- this.driver = driver;
38
- this.mapper = driver.mapper.forModel(this.name);
39
- }
40
40
  };
41
41
  //#endregion
42
42
  export { Model, Model as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["findOneOP","updateOP","deleteOP","countAllOP","tableExistsOP"],"sources":["../../src/model/index.ts"],"sourcesContent":["import ScyllaClient from \"..\"\nimport { Result } from \"../result\"\n\nimport fillDefaults from \"../utils/fillDefaults\"\n\nimport { mapping } from \"cassandra-driver/lib/mapping\"\nimport type { DocumentResult, Query, QueryOptions } from \"../types\"\nimport type { Schema } from \"../schema\"\n\nimport findOneOP from \"../operations/findOne\"\nimport findOP from \"../operations/find\"\nimport updateOP from \"../operations/update\"\nimport deleteOP from \"../operations/delete\"\nimport countAllOP from \"../operations/countAll\"\n\nimport tableExistsOP from \"../operations/tableExists\"\nimport syncOP from \"../operations/sync\"\n\nexport class Model<TDoc = any> {\n\tname: string\n\tschema: Schema<any>\n\tdriver: ScyllaClient\n\tmapper: mapping.ModelMapper\n\n\tconstructor(name: string, schema: Schema<any>) {\n\t\tthis.name = name\n\t\tthis.schema = schema\n\n\t\tif (!Array.isArray(this.schema.keys)) {\n\t\t\tthrow new Error(`[${this.name}] model has missing \"keys\" array`)\n\t\t}\n\t\tif (!this.schema.table_name) {\n\t\t\tthrow new Error(`[${this.name}] model has missing \"table_name\"`)\n\t\t}\n\t\tif (!this.schema.fields || typeof this.schema.fields !== \"object\") {\n\t\t\tthrow new Error(\n\t\t\t\t`[${this.name}] model has missing or invalid \"fields\"`,\n\t\t\t)\n\t\t}\n\t}\n\n\tcreate = (data: Partial<TDoc>) => this._wrap(data)\n\n\tfind: {\n\t\t(\n\t\t\tquery: Query<TDoc>,\n\t\t\toptions: QueryOptions & { raw: true },\n\t\t): Promise<TDoc[]>\n\t\t(\n\t\t\tquery?: Query<TDoc>,\n\t\t\toptions?: QueryOptions,\n\t\t): Promise<DocumentResult<TDoc>[]>\n\t} = findOP.bind(this)\n\n\tfindOne: {\n\t\t(\n\t\t\tquery: Query<TDoc>,\n\t\t\toptions: QueryOptions & { raw: true },\n\t\t): Promise<TDoc>\n\t\t(\n\t\t\tquery?: Query<TDoc>,\n\t\t\toptions?: QueryOptions,\n\t\t): Promise<DocumentResult<TDoc>>\n\t} = findOneOP.bind(this)\n\n\tupdate: (query: Query<TDoc>) => Promise<DocumentResult<TDoc>> =\n\t\tupdateOP.bind(this)\n\n\tdelete: (query: Query<TDoc>) => Promise<mapping.Result> =\n\t\tdeleteOP.bind(this)\n\n\tcountAll: () => Promise<number> = countAllOP.bind(this)\n\n\t_sync: typeof syncOP = syncOP.bind(this)\n\t_tableExists: typeof tableExistsOP = tableExistsOP.bind(this)\n\n\t_wrap(row: any): DocumentResult<TDoc> | null {\n\t\tif (!row) {\n\t\t\treturn null\n\t\t}\n\n\t\trow = fillDefaults(this.schema, row)\n\n\t\treturn new Result<TDoc>(row, this) as DocumentResult<TDoc>\n\t}\n\n\t_connect(driver: ScyllaClient) {\n\t\tthis.driver = driver\n\t\tthis.mapper = driver.mapper.forModel(this.name)\n\t}\n}\n\nexport default Model\n"],"mappings":";;;;;;;;;;AAkBA,IAAa,QAAb,MAA+B;CAC9B;CACA;CACA;CACA;CAEA,YAAY,MAAc,QAAqB;AAC9C,OAAK,OAAO;AACZ,OAAK,SAAS;AAEd,MAAI,CAAC,MAAM,QAAQ,KAAK,OAAO,KAAK,CACnC,OAAM,IAAI,MAAM,IAAI,KAAK,KAAK,kCAAkC;AAEjE,MAAI,CAAC,KAAK,OAAO,WAChB,OAAM,IAAI,MAAM,IAAI,KAAK,KAAK,kCAAkC;AAEjE,MAAI,CAAC,KAAK,OAAO,UAAU,OAAO,KAAK,OAAO,WAAW,SACxD,OAAM,IAAI,MACT,IAAI,KAAK,KAAK,yCACd;;CAIH,UAAU,SAAwB,KAAK,MAAM,KAAK;CAElD,OASI,OAAO,KAAK,KAAK;CAErB,UASIA,gBAAU,KAAK,KAAK;CAExB,SACCC,eAAS,KAAK,KAAK;CAEpB,SACCC,eAAS,KAAK,KAAK;CAEpB,WAAkCC,iBAAW,KAAK,KAAK;CAEvD,QAAuB,OAAO,KAAK,KAAK;CACxC,eAAqCC,oBAAc,KAAK,KAAK;CAE7D,MAAM,KAAuC;AAC5C,MAAI,CAAC,IACJ,QAAO;AAGR,QAAM,aAAa,KAAK,QAAQ,IAAI;AAEpC,SAAO,IAAI,OAAa,KAAK,KAAK;;CAGnC,SAAS,QAAsB;AAC9B,OAAK,SAAS;AACd,OAAK,SAAS,OAAO,OAAO,SAAS,KAAK,KAAK"}
1
+ {"version":3,"file":"index.mjs","names":["findOneOP","updateOP","deleteOP","countAllOP","tableExistsOP"],"sources":["../../src/model/index.ts"],"sourcesContent":["import Client from \"..\"\nimport { Result } from \"../result\"\n\nimport fillDefaults from \"../utils/fillDefaults\"\n\nimport { mapping } from \"cassandra-driver/lib/mapping\"\nimport type { DocumentResult, Query, QueryOptions } from \"../types\"\nimport type { Schema } from \"../schema\"\n\nimport findOneOP from \"../operations/findOne\"\nimport findOP from \"../operations/find\"\nimport updateOP from \"../operations/update\"\nimport deleteOP from \"../operations/delete\"\nimport countAllOP from \"../operations/countAll\"\n\nimport tableExistsOP from \"../operations/tableExists\"\nimport syncOP from \"../operations/sync\"\n\nexport class Model<TDoc = any> {\n\tname: string\n\tschema: Schema<any>\n\n\tget client(): Client {\n\t\treturn globalThis.__scylla_client\n\t}\n\n\tget mapper(): mapping.ModelMapper {\n\t\treturn globalThis.__scylla_client?.mapper\n\t}\n\n\tconstructor(name: string, schema: Schema<any>) {\n\t\tthis.name = name\n\t\tthis.schema = schema\n\n\t\tif (!Array.isArray(this.schema.keys)) {\n\t\t\tthrow new Error(`[${this.name}] model has missing \"keys\" array`)\n\t\t}\n\t\tif (!this.schema.table_name) {\n\t\t\tthrow new Error(`[${this.name}] model has missing \"table_name\"`)\n\t\t}\n\t\tif (!this.schema.fields || typeof this.schema.fields !== \"object\") {\n\t\t\tthrow new Error(\n\t\t\t\t`[${this.name}] model has missing or invalid \"fields\"`,\n\t\t\t)\n\t\t}\n\t}\n\n\tcreate = (data: Partial<TDoc>) => this._wrap(data)\n\n\tfind: {\n\t\t(\n\t\t\tquery: Query<TDoc>,\n\t\t\toptions: QueryOptions & { raw: true },\n\t\t): Promise<TDoc[]>\n\t\t(\n\t\t\tquery?: Query<TDoc>,\n\t\t\toptions?: QueryOptions,\n\t\t): Promise<DocumentResult<TDoc>[]>\n\t} = findOP.bind(this)\n\n\tfindOne: {\n\t\t(\n\t\t\tquery: Query<TDoc>,\n\t\t\toptions: QueryOptions & { raw: true },\n\t\t): Promise<TDoc>\n\t\t(\n\t\t\tquery?: Query<TDoc>,\n\t\t\toptions?: QueryOptions,\n\t\t): Promise<DocumentResult<TDoc>>\n\t} = findOneOP.bind(this)\n\n\tupdate: (query: Query<TDoc>) => Promise<DocumentResult<TDoc>> =\n\t\tupdateOP.bind(this)\n\n\tdelete: (query: Query<TDoc>) => Promise<mapping.Result> =\n\t\tdeleteOP.bind(this)\n\n\tcountAll: () => Promise<number> = countAllOP.bind(this)\n\n\t_sync: typeof syncOP = syncOP.bind(this)\n\t_tableExists: typeof tableExistsOP = tableExistsOP.bind(this)\n\n\t_wrap(row: any): DocumentResult<TDoc> | null {\n\t\tif (!row) {\n\t\t\treturn null\n\t\t}\n\n\t\trow = fillDefaults(this.schema, row)\n\n\t\treturn new Result<TDoc>(row, this) as DocumentResult<TDoc>\n\t}\n}\n\nexport default Model\n"],"mappings":";;;;;;;;;;AAkBA,IAAa,QAAb,MAA+B;CAC9B;CACA;CAEA,IAAI,SAAiB;AACpB,SAAO,WAAW;;CAGnB,IAAI,SAA8B;AACjC,SAAO,WAAW,iBAAiB;;CAGpC,YAAY,MAAc,QAAqB;AAC9C,OAAK,OAAO;AACZ,OAAK,SAAS;AAEd,MAAI,CAAC,MAAM,QAAQ,KAAK,OAAO,KAAK,CACnC,OAAM,IAAI,MAAM,IAAI,KAAK,KAAK,kCAAkC;AAEjE,MAAI,CAAC,KAAK,OAAO,WAChB,OAAM,IAAI,MAAM,IAAI,KAAK,KAAK,kCAAkC;AAEjE,MAAI,CAAC,KAAK,OAAO,UAAU,OAAO,KAAK,OAAO,WAAW,SACxD,OAAM,IAAI,MACT,IAAI,KAAK,KAAK,yCACd;;CAIH,UAAU,SAAwB,KAAK,MAAM,KAAK;CAElD,OASI,OAAO,KAAK,KAAK;CAErB,UASIA,gBAAU,KAAK,KAAK;CAExB,SACCC,eAAS,KAAK,KAAK;CAEpB,SACCC,eAAS,KAAK,KAAK;CAEpB,WAAkCC,iBAAW,KAAK,KAAK;CAEvD,QAAuB,OAAO,KAAK,KAAK;CACxC,eAAqCC,oBAAc,KAAK,KAAK;CAE7D,MAAM,KAAuC;AAC5C,MAAI,CAAC,IACJ,QAAO;AAGR,QAAM,aAAa,KAAK,QAAQ,IAAI;AAEpC,SAAO,IAAI,OAAa,KAAK,KAAK"}
@@ -1,14 +1,14 @@
1
1
  //#region src/operations/countAll.ts
2
2
  async function countAll_default(timeoutMs = 6e4) {
3
- const cql = `SELECT COUNT(1) FROM ${this.driver.config.keyspace}.${this.schema.table_name}`;
3
+ const cql = `SELECT COUNT(1) FROM ${this.client.config.keyspace}.${this.schema.table_name}`;
4
4
  const queryOptions = {
5
5
  prepare: true,
6
6
  readTimeout: timeoutMs
7
7
  };
8
8
  const operation = async () => {
9
- return (await this.driver.client.execute(cql, [], queryOptions)).rows[0].count.toNumber();
9
+ return (await this.client.driver.execute(cql, [], queryOptions)).rows[0].count.toNumber();
10
10
  };
11
- return this.driver.executeWithRetry(operation, `countAll on ${this.name}`);
11
+ return this.client.executeWithRetry(operation, `countAll on ${this.name}`);
12
12
  }
13
13
  //#endregion
14
14
  export { countAll_default as default };
@@ -1 +1 @@
1
- {"version":3,"file":"countAll.mjs","names":[],"sources":["../../src/operations/countAll.ts"],"sourcesContent":["import type Model from \"../model\"\n\nexport default async function (this: Model, timeoutMs: number = 60000) {\n\tconst cql = `SELECT COUNT(1) FROM ${this.driver.config.keyspace}.${this.schema.table_name}`\n\n\tconst queryOptions = {\n\t\tprepare: true,\n\t\treadTimeout: timeoutMs,\n\t}\n\n\tconst operation = async () => {\n\t\tconst result = await this.driver.client.execute(cql, [], queryOptions)\n\n\t\treturn result.rows[0].count.toNumber()\n\t}\n\n\treturn this.driver.executeWithRetry(operation, `countAll on ${this.name}`)\n}\n"],"mappings":";AAEA,eAAA,iBAA4C,YAAoB,KAAO;CACtE,MAAM,MAAM,wBAAwB,KAAK,OAAO,OAAO,SAAS,GAAG,KAAK,OAAO;CAE/E,MAAM,eAAe;EACpB,SAAS;EACT,aAAa;EACb;CAED,MAAM,YAAY,YAAY;AAG7B,UAAO,MAFc,KAAK,OAAO,OAAO,QAAQ,KAAK,EAAE,EAAE,aAAa,EAExD,KAAK,GAAG,MAAM,UAAU;;AAGvC,QAAO,KAAK,OAAO,iBAAiB,WAAW,eAAe,KAAK,OAAO"}
1
+ {"version":3,"file":"countAll.mjs","names":[],"sources":["../../src/operations/countAll.ts"],"sourcesContent":["import type Model from \"../model\"\n\nexport default async function (this: Model, timeoutMs: number = 60000) {\n\tconst cql = `SELECT COUNT(1) FROM ${this.client.config.keyspace}.${this.schema.table_name}`\n\n\tconst queryOptions = {\n\t\tprepare: true,\n\t\treadTimeout: timeoutMs,\n\t}\n\n\tconst operation = async () => {\n\t\tconst result = await this.client.driver.execute(cql, [], queryOptions)\n\n\t\treturn result.rows[0].count.toNumber()\n\t}\n\n\treturn this.client.executeWithRetry(operation, `countAll on ${this.name}`)\n}\n"],"mappings":";AAEA,eAAA,iBAA4C,YAAoB,KAAO;CACtE,MAAM,MAAM,wBAAwB,KAAK,OAAO,OAAO,SAAS,GAAG,KAAK,OAAO;CAE/E,MAAM,eAAe;EACpB,SAAS;EACT,aAAa;EACb;CAED,MAAM,YAAY,YAAY;AAG7B,UAAO,MAFc,KAAK,OAAO,OAAO,QAAQ,KAAK,EAAE,EAAE,aAAa,EAExD,KAAK,GAAG,MAAM,UAAU;;AAGvC,QAAO,KAAK,OAAO,iBAAiB,WAAW,eAAe,KAAK,OAAO"}
@@ -3,7 +3,7 @@ async function delete_default(query) {
3
3
  const operation = async () => {
4
4
  return await this.mapper.remove(query);
5
5
  };
6
- return this.driver.executeWithRetry(operation, `delete on ${this.name}`);
6
+ return this.client.executeWithRetry(operation, `delete on ${this.name}`);
7
7
  }
8
8
  //#endregion
9
9
  export { delete_default as default };
@@ -1 +1 @@
1
- {"version":3,"file":"delete.mjs","names":[],"sources":["../../src/operations/delete.ts"],"sourcesContent":["import type Model from \"../model\"\n\nexport default async function (this: Model, query: any) {\n\tconst operation = async () => {\n\t\treturn await this.mapper.remove(query)\n\t}\n\n\treturn this.driver.executeWithRetry(operation, `delete on ${this.name}`)\n}\n"],"mappings":";AAEA,eAAA,eAA4C,OAAY;CACvD,MAAM,YAAY,YAAY;AAC7B,SAAO,MAAM,KAAK,OAAO,OAAO,MAAM;;AAGvC,QAAO,KAAK,OAAO,iBAAiB,WAAW,aAAa,KAAK,OAAO"}
1
+ {"version":3,"file":"delete.mjs","names":[],"sources":["../../src/operations/delete.ts"],"sourcesContent":["import type Model from \"../model\"\n\nexport default async function (this: Model, query: any) {\n\tconst operation = async () => {\n\t\treturn await this.mapper.remove(query)\n\t}\n\n\treturn this.client.executeWithRetry(operation, `delete on ${this.name}`)\n}\n"],"mappings":";AAEA,eAAA,eAA4C,OAAY;CACvD,MAAM,YAAY,YAAY;AAC7B,SAAO,MAAM,KAAK,OAAO,OAAO,MAAM;;AAGvC,QAAO,KAAK,OAAO,iBAAiB,WAAW,aAAa,KAAK,OAAO"}
@@ -14,7 +14,7 @@ async function findOP(query = {}, options) {
14
14
  if (options?.raw === true) return rows;
15
15
  return rows.map((row) => this._wrap(row));
16
16
  };
17
- return this.driver.executeWithRetry(operation, `find on ${this.name}`);
17
+ return this.client.executeWithRetry(operation, `find on ${this.name}`);
18
18
  }
19
19
  //#endregion
20
20
  export { findOP as default };
@@ -1 +1 @@
1
- {"version":3,"file":"find.mjs","names":[],"sources":["../../src/operations/find.ts"],"sourcesContent":["import type Model from \"../model\"\nimport type { mapping } from \"cassandra-driver/lib/mapping\"\nimport type { Query, QueryOptions } from \"../types\"\nimport queryParser from \"../utils/queryParser\"\n\nexport default async function findOP<TDoc>(\n\tthis: Model<TDoc>,\n\tquery: Query<TDoc> = {},\n\toptions?: QueryOptions,\n) {\n\tconst { $limit, $orderby, ...rest } = query\n\n\tlet parsedQuery = queryParser(this, rest)\n\n\tconst docInfo: mapping.FindDocInfo = {}\n\n\tif ($limit !== undefined) {\n\t\tif (typeof $limit !== \"number\" || $limit <= 0) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`{$limit} operator must be a number greater than 0`,\n\t\t\t)\n\t\t}\n\t\tdocInfo.limit = $limit\n\t}\n\n\tif ($orderby !== undefined) {\n\t\tdocInfo.orderBy = $orderby as Record<string, \"asc\" | \"desc\">\n\t}\n\n\tconst operation = async () => {\n\t\tconst result = await this.mapper.find(parsedQuery, docInfo)\n\t\tconst rows = result.toArray()\n\n\t\tif (options?.raw === true) {\n\t\t\treturn rows\n\t\t}\n\n\t\treturn rows.map((row) => this._wrap(row))\n\t}\n\n\treturn this.driver.executeWithRetry(operation, `find on ${this.name}`)\n}\n"],"mappings":";;AAKA,eAA8B,OAE7B,QAAqB,EAAE,EACvB,SACC;CACD,MAAM,EAAE,QAAQ,UAAU,GAAG,SAAS;CAEtC,IAAI,cAAc,YAAY,MAAM,KAAK;CAEzC,MAAM,UAA+B,EAAE;AAEvC,KAAI,WAAW,KAAA,GAAW;AACzB,MAAI,OAAO,WAAW,YAAY,UAAU,EAC3C,OAAM,IAAI,UACT,oDACA;AAEF,UAAQ,QAAQ;;AAGjB,KAAI,aAAa,KAAA,EAChB,SAAQ,UAAU;CAGnB,MAAM,YAAY,YAAY;EAE7B,MAAM,QAAO,MADQ,KAAK,OAAO,KAAK,aAAa,QAAQ,EACvC,SAAS;AAE7B,MAAI,SAAS,QAAQ,KACpB,QAAO;AAGR,SAAO,KAAK,KAAK,QAAQ,KAAK,MAAM,IAAI,CAAC;;AAG1C,QAAO,KAAK,OAAO,iBAAiB,WAAW,WAAW,KAAK,OAAO"}
1
+ {"version":3,"file":"find.mjs","names":[],"sources":["../../src/operations/find.ts"],"sourcesContent":["import type Model from \"../model\"\nimport type { mapping } from \"cassandra-driver/lib/mapping\"\nimport type { Query, QueryOptions } from \"../types\"\nimport queryParser from \"../utils/queryParser\"\n\nexport default async function findOP<TDoc>(\n\tthis: Model<TDoc>,\n\tquery: Query<TDoc> = {},\n\toptions?: QueryOptions,\n) {\n\tconst { $limit, $orderby, ...rest } = query\n\n\tlet parsedQuery = queryParser(this, rest)\n\n\tconst docInfo: mapping.FindDocInfo = {}\n\n\tif ($limit !== undefined) {\n\t\tif (typeof $limit !== \"number\" || $limit <= 0) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`{$limit} operator must be a number greater than 0`,\n\t\t\t)\n\t\t}\n\t\tdocInfo.limit = $limit\n\t}\n\n\tif ($orderby !== undefined) {\n\t\tdocInfo.orderBy = $orderby as Record<string, \"asc\" | \"desc\">\n\t}\n\n\tconst operation = async () => {\n\t\tconst result = await this.mapper.find(parsedQuery, docInfo)\n\t\tconst rows = result.toArray()\n\n\t\tif (options?.raw === true) {\n\t\t\treturn rows\n\t\t}\n\n\t\treturn rows.map((row) => this._wrap(row))\n\t}\n\n\treturn this.client.executeWithRetry(operation, `find on ${this.name}`)\n}\n"],"mappings":";;AAKA,eAA8B,OAE7B,QAAqB,EAAE,EACvB,SACC;CACD,MAAM,EAAE,QAAQ,UAAU,GAAG,SAAS;CAEtC,IAAI,cAAc,YAAY,MAAM,KAAK;CAEzC,MAAM,UAA+B,EAAE;AAEvC,KAAI,WAAW,KAAA,GAAW;AACzB,MAAI,OAAO,WAAW,YAAY,UAAU,EAC3C,OAAM,IAAI,UACT,oDACA;AAEF,UAAQ,QAAQ;;AAGjB,KAAI,aAAa,KAAA,EAChB,SAAQ,UAAU;CAGnB,MAAM,YAAY,YAAY;EAE7B,MAAM,QAAO,MADQ,KAAK,OAAO,KAAK,aAAa,QAAQ,EACvC,SAAS;AAE7B,MAAI,SAAS,QAAQ,KACpB,QAAO;AAGR,SAAO,KAAK,KAAK,QAAQ,KAAK,MAAM,IAAI,CAAC;;AAG1C,QAAO,KAAK,OAAO,iBAAiB,WAAW,WAAW,KAAK,OAAO"}
@@ -9,7 +9,7 @@ function findOne_default(query, options) {
9
9
  if (options?.raw === true) return result.toRaw();
10
10
  return result;
11
11
  };
12
- return this.driver.executeWithRetry(operation, `findOne on ${this.name}`);
12
+ return this.client.executeWithRetry(operation, `findOne on ${this.name}`);
13
13
  }
14
14
  //#endregion
15
15
  export { findOne_default as default };
@@ -1 +1 @@
1
- {"version":3,"file":"findOne.mjs","names":[],"sources":["../../src/operations/findOne.ts"],"sourcesContent":["import type { QueryOptions } from \"../types\"\nimport type Model from \"../model\"\nimport queryParser from \"../utils/queryParser\"\n\nexport default function (this: Model, query: any, options?: QueryOptions) {\n\tquery = queryParser(this, query)\n\n\tconst operation = async () => {\n\t\tlet result = await this.mapper.get(query)\n\n\t\tif (!result) {\n\t\t\treturn null\n\t\t}\n\n\t\tresult = this._wrap(result)\n\n\t\tif (options?.raw === true) {\n\t\t\treturn result.toRaw()\n\t\t}\n\n\t\treturn result\n\t}\n\n\treturn this.driver.executeWithRetry(operation, `findOne on ${this.name}`)\n}\n"],"mappings":";;AAIA,SAAA,gBAAsC,OAAY,SAAwB;AACzE,SAAQ,YAAY,MAAM,MAAM;CAEhC,MAAM,YAAY,YAAY;EAC7B,IAAI,SAAS,MAAM,KAAK,OAAO,IAAI,MAAM;AAEzC,MAAI,CAAC,OACJ,QAAO;AAGR,WAAS,KAAK,MAAM,OAAO;AAE3B,MAAI,SAAS,QAAQ,KACpB,QAAO,OAAO,OAAO;AAGtB,SAAO;;AAGR,QAAO,KAAK,OAAO,iBAAiB,WAAW,cAAc,KAAK,OAAO"}
1
+ {"version":3,"file":"findOne.mjs","names":[],"sources":["../../src/operations/findOne.ts"],"sourcesContent":["import type { QueryOptions } from \"../types\"\nimport type Model from \"../model\"\nimport queryParser from \"../utils/queryParser\"\n\nexport default function (this: Model, query: any, options?: QueryOptions) {\n\tquery = queryParser(this, query)\n\n\tconst operation = async () => {\n\t\tlet result = await this.mapper.get(query)\n\n\t\tif (!result) {\n\t\t\treturn null\n\t\t}\n\n\t\tresult = this._wrap(result)\n\n\t\tif (options?.raw === true) {\n\t\t\treturn result.toRaw()\n\t\t}\n\n\t\treturn result\n\t}\n\n\treturn this.client.executeWithRetry(operation, `findOne on ${this.name}`)\n}\n"],"mappings":";;AAIA,SAAA,gBAAsC,OAAY,SAAwB;AACzE,SAAQ,YAAY,MAAM,MAAM;CAEhC,MAAM,YAAY,YAAY;EAC7B,IAAI,SAAS,MAAM,KAAK,OAAO,IAAI,MAAM;AAEzC,MAAI,CAAC,OACJ,QAAO;AAGR,WAAS,KAAK,MAAM,OAAO;AAE3B,MAAI,SAAS,QAAQ,KACpB,QAAO,OAAO,OAAO;AAGtB,SAAO;;AAGR,QAAO,KAAK,OAAO,iBAAiB,WAAW,cAAc,KAAK,OAAO"}
@@ -3,7 +3,7 @@ import create_table_default from "../cql_gen/create_table.mjs";
3
3
  async function syncOP() {
4
4
  if (await this._tableExists()) return;
5
5
  try {
6
- await this.driver.client.execute(create_table_default(this));
6
+ await this.client.driver.execute(create_table_default(this));
7
7
  console.log(`Table "${this.schema.table_name}" created successfully`);
8
8
  } catch (error) {
9
9
  console.error(`Failed to create table "${this.schema.table_name}":`, error);
@@ -1 +1 @@
1
- {"version":3,"file":"sync.mjs","names":["generateCreateTableCQL"],"sources":["../../src/operations/sync.ts"],"sourcesContent":["import type Model from \"../model\"\nimport generateCreateTableCQL from \"../cql_gen/create_table\"\n\nexport default async function syncOP(this: Model) {\n\tconst tableExists = await this._tableExists()\n\n\tif (tableExists) {\n\t\treturn\n\t}\n\n\ttry {\n\t\tawait this.driver.client.execute(generateCreateTableCQL(this))\n\n\t\tconsole.log(`Table \"${this.schema.table_name}\" created successfully`)\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`Failed to create table \"${this.schema.table_name}\":`,\n\t\t\terror,\n\t\t)\n\t\tthrow error\n\t}\n}\n"],"mappings":";;AAGA,eAA8B,SAAoB;AAGjD,KAAI,MAFsB,KAAK,cAAc,CAG5C;AAGD,KAAI;AACH,QAAM,KAAK,OAAO,OAAO,QAAQA,qBAAuB,KAAK,CAAC;AAE9D,UAAQ,IAAI,UAAU,KAAK,OAAO,WAAW,wBAAwB;UAC7D,OAAO;AACf,UAAQ,MACP,2BAA2B,KAAK,OAAO,WAAW,KAClD,MACA;AACD,QAAM"}
1
+ {"version":3,"file":"sync.mjs","names":["generateCreateTableCQL"],"sources":["../../src/operations/sync.ts"],"sourcesContent":["import type Model from \"../model\"\nimport generateCreateTableCQL from \"../cql_gen/create_table\"\n\nexport default async function syncOP(this: Model) {\n\tconst tableExists = await this._tableExists()\n\n\tif (tableExists) {\n\t\treturn\n\t}\n\n\ttry {\n\t\tawait this.client.driver.execute(generateCreateTableCQL(this))\n\n\t\tconsole.log(`Table \"${this.schema.table_name}\" created successfully`)\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`Failed to create table \"${this.schema.table_name}\":`,\n\t\t\terror,\n\t\t)\n\t\tthrow error\n\t}\n}\n"],"mappings":";;AAGA,eAA8B,SAAoB;AAGjD,KAAI,MAFsB,KAAK,cAAc,CAG5C;AAGD,KAAI;AACH,QAAM,KAAK,OAAO,OAAO,QAAQA,qBAAuB,KAAK,CAAC;AAE9D,UAAQ,IAAI,UAAU,KAAK,OAAO,WAAW,wBAAwB;UAC7D,OAAO;AACf,UAAQ,MACP,2BAA2B,KAAK,OAAO,WAAW,KAClD,MACA;AACD,QAAM"}
@@ -7,7 +7,7 @@ async function tableExists_default() {
7
7
  AND table_name = ?
8
8
  `;
9
9
  try {
10
- return (await this.driver.client.execute(cql, [this.driver.config.keyspace, this.schema.table_name], { prepare: true })).rows.length > 0;
10
+ return (await this.client.driver.execute(cql, [this.client.config.keyspace, this.schema.table_name], { prepare: true })).rows.length > 0;
11
11
  } catch (error) {
12
12
  console.error(`Failed to check if table "${this.schema.table_name}" exists:`, error);
13
13
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"tableExists.mjs","names":[],"sources":["../../src/operations/tableExists.ts"],"sourcesContent":["import type Model from \"../model\"\n\nexport default async function (this: Model) {\n\tconst cql = `\n\t\t\tSELECT table_name\n\t\t\tFROM system_schema.tables\n\t\t\tWHERE keyspace_name = ?\n\t\t\tAND table_name = ?\n\t\t`\n\n\ttry {\n\t\tconst result = await this.driver.client.execute(\n\t\t\tcql,\n\t\t\t[this.driver.config.keyspace, this.schema.table_name],\n\t\t\t{\n\t\t\t\tprepare: true,\n\t\t\t},\n\t\t)\n\n\t\treturn result.rows.length > 0\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`Failed to check if table \"${this.schema.table_name}\" exists:`,\n\t\t\terror,\n\t\t)\n\n\t\treturn false\n\t}\n}\n"],"mappings":";AAEA,eAAA,sBAA4C;CAC3C,MAAM,MAAM;;;;;;AAOZ,KAAI;AASH,UAAO,MARc,KAAK,OAAO,OAAO,QACvC,KACA,CAAC,KAAK,OAAO,OAAO,UAAU,KAAK,OAAO,WAAW,EACrD,EACC,SAAS,MACT,CACD,EAEa,KAAK,SAAS;UACpB,OAAO;AACf,UAAQ,MACP,6BAA6B,KAAK,OAAO,WAAW,YACpD,MACA;AAED,SAAO"}
1
+ {"version":3,"file":"tableExists.mjs","names":[],"sources":["../../src/operations/tableExists.ts"],"sourcesContent":["import type Model from \"../model\"\n\nexport default async function (this: Model) {\n\tconst cql = `\n\t\t\tSELECT table_name\n\t\t\tFROM system_schema.tables\n\t\t\tWHERE keyspace_name = ?\n\t\t\tAND table_name = ?\n\t\t`\n\n\ttry {\n\t\tconst result = await this.client.driver.execute(\n\t\t\tcql,\n\t\t\t[this.client.config.keyspace, this.schema.table_name],\n\t\t\t{\n\t\t\t\tprepare: true,\n\t\t\t},\n\t\t)\n\n\t\treturn result.rows.length > 0\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`Failed to check if table \"${this.schema.table_name}\" exists:`,\n\t\t\terror,\n\t\t)\n\n\t\treturn false\n\t}\n}\n"],"mappings":";AAEA,eAAA,sBAA4C;CAC3C,MAAM,MAAM;;;;;;AAOZ,KAAI;AASH,UAAO,MARc,KAAK,OAAO,OAAO,QACvC,KACA,CAAC,KAAK,OAAO,OAAO,UAAU,KAAK,OAAO,WAAW,EACrD,EACC,SAAS,MACT,CACD,EAEa,KAAK,SAAS;UACpB,OAAO;AACf,UAAQ,MACP,6BAA6B,KAAK,OAAO,WAAW,YACpD,MACA;AAED,SAAO"}
@@ -10,7 +10,7 @@ async function update_default(query) {
10
10
  await this.mapper.update(query);
11
11
  return this._wrap(query);
12
12
  };
13
- return this.driver.executeWithRetry(operation, `update on ${this.name}`);
13
+ return this.client.executeWithRetry(operation, `update on ${this.name}`);
14
14
  }
15
15
  //#endregion
16
16
  export { update_default as default };
@@ -1 +1 @@
1
- {"version":3,"file":"update.mjs","names":[],"sources":["../../src/operations/update.ts"],"sourcesContent":["import type Model from \"../model\"\nimport fillDefaults from \"../utils/fillDefaults\"\nimport typeChecker from \"../utils/typeChecker\"\n\nexport default async function (this: Model, query: any) {\n\tquery = fillDefaults(this.schema, query)\n\n\ttypeChecker(this, query)\n\n\tif (typeof query.__v !== \"undefined\") {\n\t\tif (Number.isNaN(query.__v)) {\n\t\t\tquery.__v = 0\n\t\t} else {\n\t\t\tquery.__v = query.__v + 1\n\t\t}\n\t}\n\n\tconst operation = async () => {\n\t\tawait this.mapper.update(query)\n\t\treturn this._wrap(query)\n\t}\n\n\treturn this.driver.executeWithRetry(operation, `update on ${this.name}`)\n}\n"],"mappings":";;;AAIA,eAAA,eAA4C,OAAY;AACvD,SAAQ,aAAa,KAAK,QAAQ,MAAM;AAExC,aAAY,MAAM,MAAM;AAExB,KAAI,OAAO,MAAM,QAAQ,YACxB,KAAI,OAAO,MAAM,MAAM,IAAI,CAC1B,OAAM,MAAM;KAEZ,OAAM,MAAM,MAAM,MAAM;CAI1B,MAAM,YAAY,YAAY;AAC7B,QAAM,KAAK,OAAO,OAAO,MAAM;AAC/B,SAAO,KAAK,MAAM,MAAM;;AAGzB,QAAO,KAAK,OAAO,iBAAiB,WAAW,aAAa,KAAK,OAAO"}
1
+ {"version":3,"file":"update.mjs","names":[],"sources":["../../src/operations/update.ts"],"sourcesContent":["import type Model from \"../model\"\nimport fillDefaults from \"../utils/fillDefaults\"\nimport typeChecker from \"../utils/typeChecker\"\n\nexport default async function (this: Model, query: any) {\n\tquery = fillDefaults(this.schema, query)\n\n\ttypeChecker(this, query)\n\n\tif (typeof query.__v !== \"undefined\") {\n\t\tif (Number.isNaN(query.__v)) {\n\t\t\tquery.__v = 0\n\t\t} else {\n\t\t\tquery.__v = query.__v + 1\n\t\t}\n\t}\n\n\tconst operation = async () => {\n\t\tawait this.mapper.update(query)\n\t\treturn this._wrap(query)\n\t}\n\n\treturn this.client.executeWithRetry(operation, `update on ${this.name}`)\n}\n"],"mappings":";;;AAIA,eAAA,eAA4C,OAAY;AACvD,SAAQ,aAAa,KAAK,QAAQ,MAAM;AAExC,aAAY,MAAM,MAAM;AAExB,KAAI,OAAO,MAAM,QAAQ,YACxB,KAAI,OAAO,MAAM,MAAM,IAAI,CAC1B,OAAM,MAAM;KAEZ,OAAM,MAAM,MAAM,MAAM;CAI1B,MAAM,YAAY,YAAY;AAC7B,QAAM,KAAK,OAAO,OAAO,MAAM;AAC/B,SAAO,KAAK,MAAM,MAAM;;AAGzB,QAAO,KAAK,OAAO,iBAAiB,WAAW,aAAa,KAAK,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import Result from \"./result\"\nimport { Schema } from \"./schema\"\n\nexport type ClientConfig = {\n\tmodelsPath?: string\n\tcontactPoints?: string[]\n\tlocalDataCenter?: string\n\tkeyspace?: string\n\tport?: number\n\tmaxRetries?: number\n\tretryDelay?: number\n\tpooling?: {\n\t\tcoreConnectionsPerHost?: Record<string, number>\n\t\tmaxRequestsPerConnection?: number\n\t}\n}\n\nexport enum ColumnTypes {\n\tAscii = \"ascii\",\n\tBigint = \"bigint\",\n\tBlob = \"blob\",\n\tBoolean = \"boolean\",\n\tCounter = \"counter\",\n\tDate = \"date\",\n\tDecimal = \"decimal\",\n\tDouble = \"double\",\n\tDuration = \"duration\",\n\tFloat = \"float\",\n\tFrozen = \"frozen\",\n\tInet = \"inet\",\n\tInt = \"int\",\n\tList = \"list\",\n\tMap = \"map\",\n\tSet = \"set\",\n\tSmallint = \"smallint\",\n\tText = \"text\",\n\tTime = \"time\",\n\tTimestamp = \"timestamp\",\n\tTimeuuid = \"timeuuid\",\n\tTinyint = \"tinyint\",\n\tTuple = \"tuple\",\n\tUuid = \"uuid\",\n\tVarchar = \"varchar\",\n\tVarint = \"varint\",\n}\n\nexport type QueryOperators<TValue> = {\n\t$eq?: TValue\n\t$ne?: TValue\n\t$in?: TValue[]\n\t$gt?: TValue\n\t$gte?: TValue\n\t$lt?: TValue\n\t$lte?: TValue\n}\n\nexport type TableKeys = (string | TableKeys)[]\n\nexport interface Column<T> {\n\ttype?: ColumnTypes | string\n\trequired?: boolean\n}\n\nexport type InferRawData<T> = {\n\t[K in keyof T as K extends `$${string}` ? never : K]: T[K] extends Column<\n\t\tinfer U\n\t>\n\t\t? U\n\t\t: T[K]\n}\n\nexport type InferDocument<S> =\n\tS extends Schema<infer T> ? InferRawData<T> : never\n\nexport type DocumentResult<TDoc> = Result<TDoc> & TDoc\n\nexport type QueryOptions = {\n\traw?: boolean\n}\n\nexport type OrderBy<TDoc> = { [K in keyof TDoc]?: \"asc\" | \"desc\" }\n\nexport type Query<TDoc> = {\n\t[K in keyof TDoc]?: TDoc[K] | QueryOperators<TDoc[K]>\n} & {\n\t$and?: Query<TDoc>[]\n\t$limit?: number\n\t$orderby?: OrderBy<TDoc>\n}\n"],"mappings":";AAiBA,IAAY,cAAL,yBAAA,aAAA;AACN,aAAA,WAAA;AACA,aAAA,YAAA;AACA,aAAA,UAAA;AACA,aAAA,aAAA;AACA,aAAA,aAAA;AACA,aAAA,UAAA;AACA,aAAA,aAAA;AACA,aAAA,YAAA;AACA,aAAA,cAAA;AACA,aAAA,WAAA;AACA,aAAA,YAAA;AACA,aAAA,UAAA;AACA,aAAA,SAAA;AACA,aAAA,UAAA;AACA,aAAA,SAAA;AACA,aAAA,SAAA;AACA,aAAA,cAAA;AACA,aAAA,UAAA;AACA,aAAA,UAAA;AACA,aAAA,eAAA;AACA,aAAA,cAAA;AACA,aAAA,aAAA;AACA,aAAA,WAAA;AACA,aAAA,UAAA;AACA,aAAA,aAAA;AACA,aAAA,YAAA;;KACA"}
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import Result from \"./result\"\nimport { Schema } from \"./schema\"\n\nexport type ClientConfig = {\n\tmodelsPath?: string\n\tcontactPoints?: string[]\n\tlocalDataCenter?: string\n\tkeyspace?: string\n\tport?: number\n\tmaxRetries?: number\n\tretryDelay?: number\n\tpooling?: {\n\t\tcoreConnectionsPerHost?: Record<string, number>\n\t\tmaxRequestsPerConnection?: number\n\t}\n}\n\nexport enum ColumnTypes {\n\tAscii = \"ascii\",\n\tBigint = \"bigint\",\n\tBlob = \"blob\",\n\tBoolean = \"boolean\",\n\tCounter = \"counter\",\n\tDate = \"date\",\n\tDecimal = \"decimal\",\n\tDouble = \"double\",\n\tDuration = \"duration\",\n\tFloat = \"float\",\n\tFrozen = \"frozen\",\n\tInet = \"inet\",\n\tInt = \"int\",\n\tList = \"list\",\n\tMap = \"map\",\n\tSet = \"set\",\n\tSmallint = \"smallint\",\n\tText = \"text\",\n\tTime = \"time\",\n\tTimestamp = \"timestamp\",\n\tTimeuuid = \"timeuuid\",\n\tTinyint = \"tinyint\",\n\tTuple = \"tuple\",\n\tUuid = \"uuid\",\n\tVarchar = \"varchar\",\n\tVarint = \"varint\",\n}\n\nexport type QueryOperators<TValue> = {\n\t$eq?: TValue\n\t$ne?: TValue\n\t$in?: TValue[]\n\t$gt?: TValue\n\t$gte?: TValue\n\t$lt?: TValue\n\t$lte?: TValue\n}\n\nexport type TableKeys = (string | TableKeys)[]\n\nexport interface Column<T> {\n\ttype?: ColumnTypes | string\n\trequired?: boolean\n}\n\nexport type InferRawData<T> = {\n\t[K in keyof T as K extends `$${string}` ? never : K]: T[K] extends Column<\n\t\tinfer U\n\t>\n\t\t? U\n\t\t: T[K]\n}\n\nexport type InferDocument<S> =\n\tS extends Schema<infer T> ? InferRawData<T> : never\n\n// export type DocOf<M extends Model<any>> =\n// \tM extends Model<infer S> ? InferDocument<S> : never\n\nexport type DocumentResult<TDoc> = Result<TDoc> & TDoc\n\nexport type QueryOptions = {\n\traw?: boolean\n}\n\nexport type OrderBy<TDoc> = { [K in keyof TDoc]?: \"asc\" | \"desc\" }\n\nexport type Query<TDoc> = {\n\t[K in keyof TDoc]?: TDoc[K] | QueryOperators<TDoc[K]>\n} & {\n\t$and?: Query<TDoc>[]\n\t$limit?: number\n\t$orderby?: OrderBy<TDoc>\n}\n"],"mappings":";AAiBA,IAAY,cAAL,yBAAA,aAAA;AACN,aAAA,WAAA;AACA,aAAA,YAAA;AACA,aAAA,UAAA;AACA,aAAA,aAAA;AACA,aAAA,aAAA;AACA,aAAA,UAAA;AACA,aAAA,aAAA;AACA,aAAA,YAAA;AACA,aAAA,cAAA;AACA,aAAA,WAAA;AACA,aAAA,YAAA;AACA,aAAA,UAAA;AACA,aAAA,SAAA;AACA,aAAA,UAAA;AACA,aAAA,SAAA;AACA,aAAA,SAAA;AACA,aAAA,cAAA;AACA,aAAA,UAAA;AACA,aAAA,UAAA;AACA,aAAA,eAAA;AACA,aAAA,cAAA;AACA,aAAA,aAAA;AACA,aAAA,WAAA;AACA,aAAA,UAAA;AACA,aAAA,aAAA;AACA,aAAA,YAAA;;KACA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ragestudio/scylla-odm",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "An ODM for ScyllaDB",
5
5
  "license": "MIT",
6
6
  "author": "RageStudio",