mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-19 15:25:59 +00:00
sql tree - before refactor
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { EngineDriver, SqlDumper } from "@dbgate/types";
|
||||
|
||||
class Command {
|
||||
export class Command {
|
||||
toSql(driver: EngineDriver) {
|
||||
const dumper = driver.createDumper();
|
||||
this.dumpSql(dumper);
|
||||
@@ -9,5 +9,3 @@ class Command {
|
||||
|
||||
dumpSql(dumper: SqlDumper) {}
|
||||
}
|
||||
|
||||
export default Command;
|
||||
|
||||
9
packages/sqltree/src/Condition.ts
Normal file
9
packages/sqltree/src/Condition.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { SqlDumper } from "@dbgate/types";
|
||||
|
||||
export abstract class Condition {
|
||||
abstract dumpSql(dumper: SqlDumper) ;
|
||||
}
|
||||
|
||||
export abstract class UnaryCondition extends Condition {
|
||||
// expr: Expresssion;
|
||||
}
|
||||
4
packages/sqltree/src/Expression.ts
Normal file
4
packages/sqltree/src/Expression.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
export abstract class Expression {
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import Command from "./Command";
|
||||
import { Command } from "./Command";
|
||||
import { NamedObjectInfo, RangeDefinition, SqlDumper } from "@dbgate/types";
|
||||
|
||||
class Select extends Command {
|
||||
export class Select extends Command {
|
||||
topRecords: number;
|
||||
from: NamedObjectInfo;
|
||||
range: RangeDefinition;
|
||||
@@ -27,5 +27,3 @@ class Select extends Command {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default Select;
|
||||
|
||||
78
packages/sqltree/src/Source.ts
Normal file
78
packages/sqltree/src/Source.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
import { SqlDumper, NamedObjectInfo } from "@dbgate/types";
|
||||
import { Select } from "./Select";
|
||||
|
||||
export class Source {
|
||||
name: NamedObjectInfo;
|
||||
alias: string;
|
||||
subQuery: Select;
|
||||
subQueryString: string;
|
||||
|
||||
dumpSqlDef(dumper: SqlDumper) {
|
||||
let sources = 0;
|
||||
if (this.name != null) sources++;
|
||||
if (this.subQuery != null) sources++;
|
||||
if (this.subQueryString != null) sources++;
|
||||
if (sources != 1)
|
||||
throw new Error("sqltree.Source should have exactly one source");
|
||||
|
||||
if (this.name != null) {
|
||||
dumper.put("%f", this.name);
|
||||
}
|
||||
if (this.subQuery) {
|
||||
dumper.put("(");
|
||||
this.subQuery.dumpSql(dumper);
|
||||
dumper.put(")");
|
||||
}
|
||||
if (this.subQueryString) {
|
||||
dumper.put("(");
|
||||
dumper.putRaw(this.subQueryString);
|
||||
dumper.put(")");
|
||||
}
|
||||
if (this.alias) {
|
||||
dumper.put(" %i", this.alias);
|
||||
}
|
||||
}
|
||||
|
||||
dumpSqlRef(dumper: SqlDumper) {
|
||||
if (this.alias != null) {
|
||||
dumper.put("%i", this.alias);
|
||||
return true;
|
||||
} else if (this.name != null) {
|
||||
dumper.put("%f", this.name);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
class Relation {
|
||||
source:Source;
|
||||
joinType: string;
|
||||
// conditions:
|
||||
|
||||
|
||||
// dumpSqlRef(dumper: SqlDumper) {
|
||||
|
||||
// dumper.put("&n");
|
||||
// dumper.putRaw(this.joinType);
|
||||
// dumper.put(" ");
|
||||
// this.source.dumpSqlDef(dumper)
|
||||
// if (Conditions.Any())
|
||||
// {
|
||||
// dumper.put(" ^on ");
|
||||
// bool was = false;
|
||||
// foreach (var cond in Conditions)
|
||||
// {
|
||||
// if (was) dumper.put(" ^and ");
|
||||
// cond.GenSql(dmp);
|
||||
// was = true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
export class FromDefinition {
|
||||
source: Source;
|
||||
relations: Relation[] = [];
|
||||
}
|
||||
@@ -1,2 +1,2 @@
|
||||
export { default as Select } from "./Select";
|
||||
export { default as Command } from "./Command";
|
||||
export { Select } from "./Select";
|
||||
export { Command } from "./Command";
|
||||
|
||||
Reference in New Issue
Block a user