@ronin/compiler 0.10.1-leo-ron-1083-experimental-210 → 0.10.2-leo-ron-1083-experimental-211

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -103,7 +103,24 @@ new Transaction(queries, {
103
103
  // Instead of returning an array of parameters for every statement (which allows for
104
104
  // preventing SQL injections), all parameters are inlined directly into the SQL strings.
105
105
  // This option should only be used if the generated SQL will be manually verified.
106
- inlineParams: true
106
+ inlineParams: true,
107
+
108
+ // By default, in the generated SQL statements, the compiler does not alias columns if
109
+ // multiple different tables with the same column names are being joined. Only the table
110
+ // names themselves are aliased.
111
+ //
112
+ // This ensures the cleanest possible SQL statements in conjunction with the default
113
+ // behavior of SQLite (and all other SQL databases), where the result of a statement is
114
+ // a list (array) of values, which are inherently not prone to conflicts.
115
+ //
116
+ // If the driver being used instead returns an object for every row, the driver must
117
+ // ensure the uniqueness of every key in that object, which means prefixing duplicated
118
+ // column names with the name of the respective table, if multiple tables are joined.
119
+ // Drivers that return objects for rows offer this behavior as an option that is
120
+ // usually called "expand columns". If the driver being used does not offer such an
121
+ // option, you can instead activate the option in the compiler, which results in longer
122
+ // SQL statements because any duplicated column name is aliased.
123
+ expandColumns: true
107
124
  });
108
125
  ```
109
126
 
package/dist/index.d.ts CHANGED
@@ -6005,13 +6005,22 @@ type AmountResult = {
6005
6005
  };
6006
6006
  type Result = SingleRecordResult | MultipleRecordResult | AmountResult;
6007
6007
 
6008
+ interface TransactionOptions {
6009
+ /** A list of models that already exist in the database. */
6010
+ models?: Array<PublicModel>;
6011
+ /**
6012
+ * Place statement parameters directly inside the statement strings instead of
6013
+ * separating them out into a dedicated `params` array.
6014
+ */
6015
+ inlineParams?: boolean;
6016
+ /** Alias column names that are duplicated when joining multiple tables. */
6017
+ expandColumns?: boolean;
6018
+ }
6008
6019
  declare class Transaction {
6009
6020
  statements: Array<Statement>;
6010
6021
  models: Array<Model>;
6011
6022
  private queries;
6012
- constructor(queries: Array<Query>, options?: Parameters<typeof this.compileQueries>[2] & {
6013
- models?: Array<PublicModel>;
6014
- });
6023
+ constructor(queries: Array<Query>, options?: TransactionOptions);
6015
6024
  /**
6016
6025
  * Composes SQL statements for the provided RONIN queries.
6017
6026
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ronin/compiler",
3
- "version": "0.10.1-leo-ron-1083-experimental-210",
3
+ "version": "0.10.2-leo-ron-1083-experimental-211",
4
4
  "type": "module",
5
5
  "description": "Compiles RONIN queries to SQL statements.",
6
6
  "publishConfig": {