40 lines
672 B
JavaScript
40 lines
672 B
JavaScript
|
const Raw = require('./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);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = Ref;
|