drizzle-orm 1.0.0-beta.6-ea4d663 → 1.0.0-beta.6-7419dcb
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/alias.cjs +1 -1
- package/alias.cjs.map +1 -1
- package/alias.js +1 -1
- package/alias.js.map +1 -1
- package/package.json +1 -1
package/alias.cjs
CHANGED
|
@@ -66,7 +66,7 @@ class ViewSelectionAliasProxyHandler {
|
|
|
66
66
|
get(selection, prop) {
|
|
67
67
|
const value = selection[prop];
|
|
68
68
|
if ((0, import_entity.is)(value, import_column.Column)) return new Proxy(value, new ColumnTableAliasProxyHandler(this.view, this.ignoreColumnAlias));
|
|
69
|
-
if ((0, import_entity.is)(value, import_subquery.Subquery) || (0, import_entity.is)(value, import_sql2.SQL) || (0, import_entity.is)(value, import_sql2.SQL.Aliased) || (0, import_sql2.isSQLWrapper)(value) || typeof value !== "object"
|
|
69
|
+
if ((0, import_entity.is)(value, import_subquery.Subquery) || (0, import_entity.is)(value, import_sql2.SQL) || (0, import_entity.is)(value, import_sql2.SQL.Aliased) || (0, import_sql2.isSQLWrapper)(value) || (typeof value !== "object" || value === null)) return value;
|
|
70
70
|
return new Proxy(value, this);
|
|
71
71
|
}
|
|
72
72
|
}
|
package/alias.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/alias.ts"],"sourcesContent":["import type * as V1 from './_relations.ts';\nimport { OriginalColumn } from './column-common.ts';\nimport type { AnyColumn } from './column.ts';\nimport { Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { View } from './sql/sql.ts';\nimport { isSQLWrapper, SQL, sql } from './sql/sql.ts';\nimport { Subquery } from './subquery.ts';\nimport { Table } from './table.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\nexport class ColumnTableAliasProxyHandler<TColumn extends Column> implements ProxyHandler<TColumn> {\n\tstatic readonly [entityKind]: string = 'ColumnTableAliasProxyHandler';\n\n\tconstructor(private table: Table | View, private ignoreColumnAlias?: boolean) {}\n\n\tget(columnObj: TColumn, prop: string | symbol): any {\n\t\tif (prop === 'table') {\n\t\t\treturn this.table;\n\t\t}\n\n\t\tif (prop === 'isAlias' && this.ignoreColumnAlias) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn columnObj[prop as keyof TColumn];\n\t}\n}\n\nexport class ViewSelectionAliasProxyHandler<TSelection extends Record<string, unknown>>\n\timplements ProxyHandler<TSelection>\n{\n\tstatic readonly [entityKind]: string = 'ViewSelectionAliasProxyHandler';\n\n\tconstructor(protected view: View, protected selection: TSelection, private ignoreColumnAlias?: boolean) {}\n\n\tget(selection: TSelection, prop: string | symbol): any {\n\t\tconst value = selection[prop as keyof TSelection];\n\n\t\tif (is(value, Column)) return new Proxy(value, new ColumnTableAliasProxyHandler(this.view, this.ignoreColumnAlias));\n\t\tif (\n\t\t\tis(value, Subquery) || is(value, SQL) || is(value, SQL.Aliased) || isSQLWrapper(value)\n\t\t\t|| (typeof value !== 'object' && value !== null)\n\t\t) return value;\n\n\t\treturn new Proxy(value as Record<string, unknown>, this);\n\t}\n}\n\nexport class TableAliasProxyHandler<T extends Table | View> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'TableAliasProxyHandler';\n\n\tconstructor(private alias: string, private replaceOriginalName: boolean, private ignoreColumnAlias?: boolean) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === Table.Symbol.IsAlias) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === Table.Symbol.Name) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (this.replaceOriginalName && prop === Table.Symbol.OriginalName) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === ViewBaseConfig) {\n\t\t\treturn {\n\t\t\t\t...target[ViewBaseConfig as keyof typeof target],\n\t\t\t\tname: this.alias,\n\t\t\t\tisAlias: true,\n\t\t\t\tselectedFields: new Proxy(\n\t\t\t\t\t(<View> target)[ViewBaseConfig].selectedFields,\n\t\t\t\t\tnew ViewSelectionAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(target, this) as View,\n\t\t\t\t\t\t(<View> target)[ViewBaseConfig].selectedFields,\n\t\t\t\t\t\tthis.ignoreColumnAlias,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif (prop === Table.Symbol.Columns) {\n\t\t\tconst columns = (target as Table)[Table.Symbol.Columns];\n\t\t\tif (!columns) {\n\t\t\t\treturn columns;\n\t\t\t}\n\n\t\t\tif (is(target, View)) {\n\t\t\t\treturn new Proxy(\n\t\t\t\t\t(<View> target)[Table.Symbol.Columns],\n\t\t\t\t\tnew ViewSelectionAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(target, this) as View,\n\t\t\t\t\t\t(<View> target)[Table.Symbol.Columns],\n\t\t\t\t\t\tthis.ignoreColumnAlias,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst proxiedColumns: { [key: string]: any } = {};\n\n\t\t\tObject.keys(columns).map((key) => {\n\t\t\t\tproxiedColumns[key] = new Proxy(\n\t\t\t\t\tcolumns[key]!,\n\t\t\t\t\tnew ColumnTableAliasProxyHandler(new Proxy(target, this), this.ignoreColumnAlias),\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn proxiedColumns;\n\t\t}\n\n\t\tconst value = target[prop as keyof typeof target];\n\t\tif (is(value, Column)) {\n\t\t\treturn new Proxy(\n\t\t\t\tvalue as AnyColumn,\n\t\t\t\tnew ColumnTableAliasProxyHandler(new Proxy(target, this), this.ignoreColumnAlias),\n\t\t\t);\n\t\t}\n\n\t\treturn value;\n\t}\n}\n\nexport class ColumnAliasProxyHandler<T extends Column> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'ColumnAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: keyof Column): any {\n\t\tif (prop === 'isAlias') {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === 'name') {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === 'keyAsName') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (prop === OriginalColumn) {\n\t\t\treturn () => target;\n\t\t}\n\n\t\treturn target[prop];\n\t}\n}\n\nexport class RelationTableAliasProxyHandler<T extends V1.Relation> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'RelationTableAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === 'sourceTable') {\n\t\t\treturn aliasedTable(target.sourceTable, this.alias);\n\t\t}\n\n\t\treturn target[prop as keyof typeof target];\n\t}\n}\n\nexport function aliasedTable<T extends Table | View>(table: T, tableAlias: string): T {\n\treturn new Proxy(table, new TableAliasProxyHandler(tableAlias, false, false));\n}\n\nexport function aliasedColumn<T extends Column>(column: T, alias: string): T {\n\treturn new Proxy(column, new ColumnAliasProxyHandler(alias));\n}\n\nexport function aliasedRelation<T extends V1.Relation>(relation: T, tableAlias: string): T {\n\treturn new Proxy(relation, new RelationTableAliasProxyHandler(tableAlias));\n}\n\nexport function aliasedTableColumn<T extends AnyColumn>(column: T, tableAlias: string): T {\n\treturn new Proxy(\n\t\tcolumn,\n\t\tnew ColumnTableAliasProxyHandler(\n\t\t\tnew Proxy(column.table, new TableAliasProxyHandler(tableAlias, false, false)),\n\t\t\tfalse,\n\t\t),\n\t);\n}\n\nexport function mapColumnsInAliasedSQLToAlias(query: SQL.Aliased, alias: string): SQL.Aliased {\n\treturn new SQL.Aliased(mapColumnsInSQLToAlias(query.sql, alias), query.fieldAlias);\n}\n\nexport function mapColumnsInSQLToAlias(query: SQL, alias: string): SQL {\n\treturn sql.join(query.queryChunks.map((c) => {\n\t\tif (is(c, Column)) {\n\t\t\treturn aliasedTableColumn(c, alias);\n\t\t}\n\t\tif (is(c, SQL)) {\n\t\t\treturn mapColumnsInSQLToAlias(c, alias);\n\t\t}\n\t\tif (is(c, SQL.Aliased)) {\n\t\t\treturn mapColumnsInAliasedSQLToAlias(c, alias);\n\t\t}\n\t\treturn c;\n\t}));\n}\n\n// Defined separately from the Column class to resolve circular dependency\nColumn.prototype.as = function(alias: string): Column {\n\treturn aliasedColumn(this, alias);\n};\n\nexport function getOriginalColumnFromAlias<T extends Column>(column: T): T {\n\treturn column[OriginalColumn]();\n}\n"],"mappings":"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","names":["import_sql"]}
|
|
1
|
+
{"version":3,"sources":["../src/alias.ts"],"sourcesContent":["import type * as V1 from './_relations.ts';\nimport { OriginalColumn } from './column-common.ts';\nimport type { AnyColumn } from './column.ts';\nimport { Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { View } from './sql/sql.ts';\nimport { isSQLWrapper, SQL, sql } from './sql/sql.ts';\nimport { Subquery } from './subquery.ts';\nimport { Table } from './table.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\nexport class ColumnTableAliasProxyHandler<TColumn extends Column> implements ProxyHandler<TColumn> {\n\tstatic readonly [entityKind]: string = 'ColumnTableAliasProxyHandler';\n\n\tconstructor(private table: Table | View, private ignoreColumnAlias?: boolean) {}\n\n\tget(columnObj: TColumn, prop: string | symbol): any {\n\t\tif (prop === 'table') {\n\t\t\treturn this.table;\n\t\t}\n\n\t\tif (prop === 'isAlias' && this.ignoreColumnAlias) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn columnObj[prop as keyof TColumn];\n\t}\n}\n\nexport class ViewSelectionAliasProxyHandler<TSelection extends Record<string, unknown>>\n\timplements ProxyHandler<TSelection>\n{\n\tstatic readonly [entityKind]: string = 'ViewSelectionAliasProxyHandler';\n\n\tconstructor(protected view: View, protected selection: TSelection, private ignoreColumnAlias?: boolean) {}\n\n\tget(selection: TSelection, prop: string | symbol): any {\n\t\tconst value = selection[prop as keyof TSelection];\n\n\t\tif (is(value, Column)) return new Proxy(value, new ColumnTableAliasProxyHandler(this.view, this.ignoreColumnAlias));\n\t\tif (\n\t\t\tis(value, Subquery) || is(value, SQL) || is(value, SQL.Aliased) || isSQLWrapper(value)\n\t\t\t|| (typeof value !== 'object' || value === null)\n\t\t) return value;\n\n\t\treturn new Proxy(value as Record<string, unknown>, this);\n\t}\n}\n\nexport class TableAliasProxyHandler<T extends Table | View> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'TableAliasProxyHandler';\n\n\tconstructor(private alias: string, private replaceOriginalName: boolean, private ignoreColumnAlias?: boolean) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === Table.Symbol.IsAlias) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === Table.Symbol.Name) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (this.replaceOriginalName && prop === Table.Symbol.OriginalName) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === ViewBaseConfig) {\n\t\t\treturn {\n\t\t\t\t...target[ViewBaseConfig as keyof typeof target],\n\t\t\t\tname: this.alias,\n\t\t\t\tisAlias: true,\n\t\t\t\tselectedFields: new Proxy(\n\t\t\t\t\t(<View> target)[ViewBaseConfig].selectedFields,\n\t\t\t\t\tnew ViewSelectionAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(target, this) as View,\n\t\t\t\t\t\t(<View> target)[ViewBaseConfig].selectedFields,\n\t\t\t\t\t\tthis.ignoreColumnAlias,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif (prop === Table.Symbol.Columns) {\n\t\t\tconst columns = (target as Table)[Table.Symbol.Columns];\n\t\t\tif (!columns) {\n\t\t\t\treturn columns;\n\t\t\t}\n\n\t\t\tif (is(target, View)) {\n\t\t\t\treturn new Proxy(\n\t\t\t\t\t(<View> target)[Table.Symbol.Columns],\n\t\t\t\t\tnew ViewSelectionAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(target, this) as View,\n\t\t\t\t\t\t(<View> target)[Table.Symbol.Columns],\n\t\t\t\t\t\tthis.ignoreColumnAlias,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst proxiedColumns: { [key: string]: any } = {};\n\n\t\t\tObject.keys(columns).map((key) => {\n\t\t\t\tproxiedColumns[key] = new Proxy(\n\t\t\t\t\tcolumns[key]!,\n\t\t\t\t\tnew ColumnTableAliasProxyHandler(new Proxy(target, this), this.ignoreColumnAlias),\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn proxiedColumns;\n\t\t}\n\n\t\tconst value = target[prop as keyof typeof target];\n\t\tif (is(value, Column)) {\n\t\t\treturn new Proxy(\n\t\t\t\tvalue as AnyColumn,\n\t\t\t\tnew ColumnTableAliasProxyHandler(new Proxy(target, this), this.ignoreColumnAlias),\n\t\t\t);\n\t\t}\n\n\t\treturn value;\n\t}\n}\n\nexport class ColumnAliasProxyHandler<T extends Column> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'ColumnAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: keyof Column): any {\n\t\tif (prop === 'isAlias') {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === 'name') {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === 'keyAsName') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (prop === OriginalColumn) {\n\t\t\treturn () => target;\n\t\t}\n\n\t\treturn target[prop];\n\t}\n}\n\nexport class RelationTableAliasProxyHandler<T extends V1.Relation> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'RelationTableAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === 'sourceTable') {\n\t\t\treturn aliasedTable(target.sourceTable, this.alias);\n\t\t}\n\n\t\treturn target[prop as keyof typeof target];\n\t}\n}\n\nexport function aliasedTable<T extends Table | View>(table: T, tableAlias: string): T {\n\treturn new Proxy(table, new TableAliasProxyHandler(tableAlias, false, false));\n}\n\nexport function aliasedColumn<T extends Column>(column: T, alias: string): T {\n\treturn new Proxy(column, new ColumnAliasProxyHandler(alias));\n}\n\nexport function aliasedRelation<T extends V1.Relation>(relation: T, tableAlias: string): T {\n\treturn new Proxy(relation, new RelationTableAliasProxyHandler(tableAlias));\n}\n\nexport function aliasedTableColumn<T extends AnyColumn>(column: T, tableAlias: string): T {\n\treturn new Proxy(\n\t\tcolumn,\n\t\tnew ColumnTableAliasProxyHandler(\n\t\t\tnew Proxy(column.table, new TableAliasProxyHandler(tableAlias, false, false)),\n\t\t\tfalse,\n\t\t),\n\t);\n}\n\nexport function mapColumnsInAliasedSQLToAlias(query: SQL.Aliased, alias: string): SQL.Aliased {\n\treturn new SQL.Aliased(mapColumnsInSQLToAlias(query.sql, alias), query.fieldAlias);\n}\n\nexport function mapColumnsInSQLToAlias(query: SQL, alias: string): SQL {\n\treturn sql.join(query.queryChunks.map((c) => {\n\t\tif (is(c, Column)) {\n\t\t\treturn aliasedTableColumn(c, alias);\n\t\t}\n\t\tif (is(c, SQL)) {\n\t\t\treturn mapColumnsInSQLToAlias(c, alias);\n\t\t}\n\t\tif (is(c, SQL.Aliased)) {\n\t\t\treturn mapColumnsInAliasedSQLToAlias(c, alias);\n\t\t}\n\t\treturn c;\n\t}));\n}\n\n// Defined separately from the Column class to resolve circular dependency\nColumn.prototype.as = function(alias: string): Column {\n\treturn aliasedColumn(this, alias);\n};\n\nexport function getOriginalColumnFromAlias<T extends Column>(column: T): T {\n\treturn column[OriginalColumn]();\n}\n"],"mappings":"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","names":["import_sql"]}
|
package/alias.js
CHANGED
|
@@ -32,7 +32,7 @@ class ViewSelectionAliasProxyHandler {
|
|
|
32
32
|
get(selection, prop) {
|
|
33
33
|
const value = selection[prop];
|
|
34
34
|
if (is(value, Column)) return new Proxy(value, new ColumnTableAliasProxyHandler(this.view, this.ignoreColumnAlias));
|
|
35
|
-
if (is(value, Subquery) || is(value, SQL) || is(value, SQL.Aliased) || isSQLWrapper(value) || typeof value !== "object"
|
|
35
|
+
if (is(value, Subquery) || is(value, SQL) || is(value, SQL.Aliased) || isSQLWrapper(value) || (typeof value !== "object" || value === null)) return value;
|
|
36
36
|
return new Proxy(value, this);
|
|
37
37
|
}
|
|
38
38
|
}
|
package/alias.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/alias.ts"],"sourcesContent":["import type * as V1 from './_relations.ts';\nimport { OriginalColumn } from './column-common.ts';\nimport type { AnyColumn } from './column.ts';\nimport { Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { View } from './sql/sql.ts';\nimport { isSQLWrapper, SQL, sql } from './sql/sql.ts';\nimport { Subquery } from './subquery.ts';\nimport { Table } from './table.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\nexport class ColumnTableAliasProxyHandler<TColumn extends Column> implements ProxyHandler<TColumn> {\n\tstatic readonly [entityKind]: string = 'ColumnTableAliasProxyHandler';\n\n\tconstructor(private table: Table | View, private ignoreColumnAlias?: boolean) {}\n\n\tget(columnObj: TColumn, prop: string | symbol): any {\n\t\tif (prop === 'table') {\n\t\t\treturn this.table;\n\t\t}\n\n\t\tif (prop === 'isAlias' && this.ignoreColumnAlias) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn columnObj[prop as keyof TColumn];\n\t}\n}\n\nexport class ViewSelectionAliasProxyHandler<TSelection extends Record<string, unknown>>\n\timplements ProxyHandler<TSelection>\n{\n\tstatic readonly [entityKind]: string = 'ViewSelectionAliasProxyHandler';\n\n\tconstructor(protected view: View, protected selection: TSelection, private ignoreColumnAlias?: boolean) {}\n\n\tget(selection: TSelection, prop: string | symbol): any {\n\t\tconst value = selection[prop as keyof TSelection];\n\n\t\tif (is(value, Column)) return new Proxy(value, new ColumnTableAliasProxyHandler(this.view, this.ignoreColumnAlias));\n\t\tif (\n\t\t\tis(value, Subquery) || is(value, SQL) || is(value, SQL.Aliased) || isSQLWrapper(value)\n\t\t\t|| (typeof value !== 'object' && value !== null)\n\t\t) return value;\n\n\t\treturn new Proxy(value as Record<string, unknown>, this);\n\t}\n}\n\nexport class TableAliasProxyHandler<T extends Table | View> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'TableAliasProxyHandler';\n\n\tconstructor(private alias: string, private replaceOriginalName: boolean, private ignoreColumnAlias?: boolean) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === Table.Symbol.IsAlias) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === Table.Symbol.Name) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (this.replaceOriginalName && prop === Table.Symbol.OriginalName) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === ViewBaseConfig) {\n\t\t\treturn {\n\t\t\t\t...target[ViewBaseConfig as keyof typeof target],\n\t\t\t\tname: this.alias,\n\t\t\t\tisAlias: true,\n\t\t\t\tselectedFields: new Proxy(\n\t\t\t\t\t(<View> target)[ViewBaseConfig].selectedFields,\n\t\t\t\t\tnew ViewSelectionAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(target, this) as View,\n\t\t\t\t\t\t(<View> target)[ViewBaseConfig].selectedFields,\n\t\t\t\t\t\tthis.ignoreColumnAlias,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif (prop === Table.Symbol.Columns) {\n\t\t\tconst columns = (target as Table)[Table.Symbol.Columns];\n\t\t\tif (!columns) {\n\t\t\t\treturn columns;\n\t\t\t}\n\n\t\t\tif (is(target, View)) {\n\t\t\t\treturn new Proxy(\n\t\t\t\t\t(<View> target)[Table.Symbol.Columns],\n\t\t\t\t\tnew ViewSelectionAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(target, this) as View,\n\t\t\t\t\t\t(<View> target)[Table.Symbol.Columns],\n\t\t\t\t\t\tthis.ignoreColumnAlias,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst proxiedColumns: { [key: string]: any } = {};\n\n\t\t\tObject.keys(columns).map((key) => {\n\t\t\t\tproxiedColumns[key] = new Proxy(\n\t\t\t\t\tcolumns[key]!,\n\t\t\t\t\tnew ColumnTableAliasProxyHandler(new Proxy(target, this), this.ignoreColumnAlias),\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn proxiedColumns;\n\t\t}\n\n\t\tconst value = target[prop as keyof typeof target];\n\t\tif (is(value, Column)) {\n\t\t\treturn new Proxy(\n\t\t\t\tvalue as AnyColumn,\n\t\t\t\tnew ColumnTableAliasProxyHandler(new Proxy(target, this), this.ignoreColumnAlias),\n\t\t\t);\n\t\t}\n\n\t\treturn value;\n\t}\n}\n\nexport class ColumnAliasProxyHandler<T extends Column> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'ColumnAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: keyof Column): any {\n\t\tif (prop === 'isAlias') {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === 'name') {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === 'keyAsName') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (prop === OriginalColumn) {\n\t\t\treturn () => target;\n\t\t}\n\n\t\treturn target[prop];\n\t}\n}\n\nexport class RelationTableAliasProxyHandler<T extends V1.Relation> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'RelationTableAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === 'sourceTable') {\n\t\t\treturn aliasedTable(target.sourceTable, this.alias);\n\t\t}\n\n\t\treturn target[prop as keyof typeof target];\n\t}\n}\n\nexport function aliasedTable<T extends Table | View>(table: T, tableAlias: string): T {\n\treturn new Proxy(table, new TableAliasProxyHandler(tableAlias, false, false));\n}\n\nexport function aliasedColumn<T extends Column>(column: T, alias: string): T {\n\treturn new Proxy(column, new ColumnAliasProxyHandler(alias));\n}\n\nexport function aliasedRelation<T extends V1.Relation>(relation: T, tableAlias: string): T {\n\treturn new Proxy(relation, new RelationTableAliasProxyHandler(tableAlias));\n}\n\nexport function aliasedTableColumn<T extends AnyColumn>(column: T, tableAlias: string): T {\n\treturn new Proxy(\n\t\tcolumn,\n\t\tnew ColumnTableAliasProxyHandler(\n\t\t\tnew Proxy(column.table, new TableAliasProxyHandler(tableAlias, false, false)),\n\t\t\tfalse,\n\t\t),\n\t);\n}\n\nexport function mapColumnsInAliasedSQLToAlias(query: SQL.Aliased, alias: string): SQL.Aliased {\n\treturn new SQL.Aliased(mapColumnsInSQLToAlias(query.sql, alias), query.fieldAlias);\n}\n\nexport function mapColumnsInSQLToAlias(query: SQL, alias: string): SQL {\n\treturn sql.join(query.queryChunks.map((c) => {\n\t\tif (is(c, Column)) {\n\t\t\treturn aliasedTableColumn(c, alias);\n\t\t}\n\t\tif (is(c, SQL)) {\n\t\t\treturn mapColumnsInSQLToAlias(c, alias);\n\t\t}\n\t\tif (is(c, SQL.Aliased)) {\n\t\t\treturn mapColumnsInAliasedSQLToAlias(c, alias);\n\t\t}\n\t\treturn c;\n\t}));\n}\n\n// Defined separately from the Column class to resolve circular dependency\nColumn.prototype.as = function(alias: string): Column {\n\treturn aliasedColumn(this, alias);\n};\n\nexport function getOriginalColumnFromAlias<T extends Column>(column: T): T {\n\treturn column[OriginalColumn]();\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/alias.ts"],"sourcesContent":["import type * as V1 from './_relations.ts';\nimport { OriginalColumn } from './column-common.ts';\nimport type { AnyColumn } from './column.ts';\nimport { Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { View } from './sql/sql.ts';\nimport { isSQLWrapper, SQL, sql } from './sql/sql.ts';\nimport { Subquery } from './subquery.ts';\nimport { Table } from './table.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\nexport class ColumnTableAliasProxyHandler<TColumn extends Column> implements ProxyHandler<TColumn> {\n\tstatic readonly [entityKind]: string = 'ColumnTableAliasProxyHandler';\n\n\tconstructor(private table: Table | View, private ignoreColumnAlias?: boolean) {}\n\n\tget(columnObj: TColumn, prop: string | symbol): any {\n\t\tif (prop === 'table') {\n\t\t\treturn this.table;\n\t\t}\n\n\t\tif (prop === 'isAlias' && this.ignoreColumnAlias) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn columnObj[prop as keyof TColumn];\n\t}\n}\n\nexport class ViewSelectionAliasProxyHandler<TSelection extends Record<string, unknown>>\n\timplements ProxyHandler<TSelection>\n{\n\tstatic readonly [entityKind]: string = 'ViewSelectionAliasProxyHandler';\n\n\tconstructor(protected view: View, protected selection: TSelection, private ignoreColumnAlias?: boolean) {}\n\n\tget(selection: TSelection, prop: string | symbol): any {\n\t\tconst value = selection[prop as keyof TSelection];\n\n\t\tif (is(value, Column)) return new Proxy(value, new ColumnTableAliasProxyHandler(this.view, this.ignoreColumnAlias));\n\t\tif (\n\t\t\tis(value, Subquery) || is(value, SQL) || is(value, SQL.Aliased) || isSQLWrapper(value)\n\t\t\t|| (typeof value !== 'object' || value === null)\n\t\t) return value;\n\n\t\treturn new Proxy(value as Record<string, unknown>, this);\n\t}\n}\n\nexport class TableAliasProxyHandler<T extends Table | View> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'TableAliasProxyHandler';\n\n\tconstructor(private alias: string, private replaceOriginalName: boolean, private ignoreColumnAlias?: boolean) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === Table.Symbol.IsAlias) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === Table.Symbol.Name) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (this.replaceOriginalName && prop === Table.Symbol.OriginalName) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === ViewBaseConfig) {\n\t\t\treturn {\n\t\t\t\t...target[ViewBaseConfig as keyof typeof target],\n\t\t\t\tname: this.alias,\n\t\t\t\tisAlias: true,\n\t\t\t\tselectedFields: new Proxy(\n\t\t\t\t\t(<View> target)[ViewBaseConfig].selectedFields,\n\t\t\t\t\tnew ViewSelectionAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(target, this) as View,\n\t\t\t\t\t\t(<View> target)[ViewBaseConfig].selectedFields,\n\t\t\t\t\t\tthis.ignoreColumnAlias,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif (prop === Table.Symbol.Columns) {\n\t\t\tconst columns = (target as Table)[Table.Symbol.Columns];\n\t\t\tif (!columns) {\n\t\t\t\treturn columns;\n\t\t\t}\n\n\t\t\tif (is(target, View)) {\n\t\t\t\treturn new Proxy(\n\t\t\t\t\t(<View> target)[Table.Symbol.Columns],\n\t\t\t\t\tnew ViewSelectionAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(target, this) as View,\n\t\t\t\t\t\t(<View> target)[Table.Symbol.Columns],\n\t\t\t\t\t\tthis.ignoreColumnAlias,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst proxiedColumns: { [key: string]: any } = {};\n\n\t\t\tObject.keys(columns).map((key) => {\n\t\t\t\tproxiedColumns[key] = new Proxy(\n\t\t\t\t\tcolumns[key]!,\n\t\t\t\t\tnew ColumnTableAliasProxyHandler(new Proxy(target, this), this.ignoreColumnAlias),\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn proxiedColumns;\n\t\t}\n\n\t\tconst value = target[prop as keyof typeof target];\n\t\tif (is(value, Column)) {\n\t\t\treturn new Proxy(\n\t\t\t\tvalue as AnyColumn,\n\t\t\t\tnew ColumnTableAliasProxyHandler(new Proxy(target, this), this.ignoreColumnAlias),\n\t\t\t);\n\t\t}\n\n\t\treturn value;\n\t}\n}\n\nexport class ColumnAliasProxyHandler<T extends Column> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'ColumnAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: keyof Column): any {\n\t\tif (prop === 'isAlias') {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === 'name') {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === 'keyAsName') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (prop === OriginalColumn) {\n\t\t\treturn () => target;\n\t\t}\n\n\t\treturn target[prop];\n\t}\n}\n\nexport class RelationTableAliasProxyHandler<T extends V1.Relation> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'RelationTableAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === 'sourceTable') {\n\t\t\treturn aliasedTable(target.sourceTable, this.alias);\n\t\t}\n\n\t\treturn target[prop as keyof typeof target];\n\t}\n}\n\nexport function aliasedTable<T extends Table | View>(table: T, tableAlias: string): T {\n\treturn new Proxy(table, new TableAliasProxyHandler(tableAlias, false, false));\n}\n\nexport function aliasedColumn<T extends Column>(column: T, alias: string): T {\n\treturn new Proxy(column, new ColumnAliasProxyHandler(alias));\n}\n\nexport function aliasedRelation<T extends V1.Relation>(relation: T, tableAlias: string): T {\n\treturn new Proxy(relation, new RelationTableAliasProxyHandler(tableAlias));\n}\n\nexport function aliasedTableColumn<T extends AnyColumn>(column: T, tableAlias: string): T {\n\treturn new Proxy(\n\t\tcolumn,\n\t\tnew ColumnTableAliasProxyHandler(\n\t\t\tnew Proxy(column.table, new TableAliasProxyHandler(tableAlias, false, false)),\n\t\t\tfalse,\n\t\t),\n\t);\n}\n\nexport function mapColumnsInAliasedSQLToAlias(query: SQL.Aliased, alias: string): SQL.Aliased {\n\treturn new SQL.Aliased(mapColumnsInSQLToAlias(query.sql, alias), query.fieldAlias);\n}\n\nexport function mapColumnsInSQLToAlias(query: SQL, alias: string): SQL {\n\treturn sql.join(query.queryChunks.map((c) => {\n\t\tif (is(c, Column)) {\n\t\t\treturn aliasedTableColumn(c, alias);\n\t\t}\n\t\tif (is(c, SQL)) {\n\t\t\treturn mapColumnsInSQLToAlias(c, alias);\n\t\t}\n\t\tif (is(c, SQL.Aliased)) {\n\t\t\treturn mapColumnsInAliasedSQLToAlias(c, alias);\n\t\t}\n\t\treturn c;\n\t}));\n}\n\n// Defined separately from the Column class to resolve circular dependency\nColumn.prototype.as = function(alias: string): Column {\n\treturn aliasedColumn(this, alias);\n};\n\nexport function getOriginalColumnFromAlias<T extends Column>(column: T): T {\n\treturn column[OriginalColumn]();\n}\n"],"mappings":"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","names":[]}
|