mirror of
https://github.com/knex/knex.git
synced 2025-06-26 22:00:25 +00:00
45 lines
707 B
JavaScript
45 lines
707 B
JavaScript
![]() |
'use strict';
|
||
|
|
||
|
import Raw from './raw';
|
||
|
|
||
|
class Ref extends Raw {
|
||
|
constructor(client, ref) {
|
||
|
super(client);
|
||
|
|
||
|
this.ref = ref;
|
||
|
this._schema = null;
|
||
|
this._alias = null;
|
||
|
}
|
||
|
|
||
|
withSchema(schema) {
|
||
|
this._schema = schema;
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
as(alias) {
|
||
|
this._alias = alias;
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
toSQL() {
|
||
|
const string = this._schema
|
||
|
? `${this._schema}.${this.ref}`
|
||
|
: this.ref;
|
||
|
|
||
|
const formatter = this.client.formatter(this);
|
||
|
|
||
|
const ref = formatter.columnize(string);
|
||
|
|
||
|
const sql = this._alias
|
||
|
? `${ref} as ${formatter.wrap(this._alias)}`
|
||
|
: ref;
|
||
|
|
||
|
this.set(sql, []);
|
||
|
|
||
|
return super.toSQL(...arguments);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default Ref
|