Skip to content

Commit 2b343c7

Browse files
add prettier
1 parent 961118d commit 2b343c7

File tree

9 files changed

+38
-28
lines changed

9 files changed

+38
-28
lines changed

.prettierignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/dist
2+
/node_modules

.prettierrc

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"trailingComma": "es5",
3+
"tabWidth": 4,
4+
"semi": false,
5+
"singleQuote": true
6+
}

__tests__/generator/simple.test.ts

-24
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@ import { Generator } from "../../src";
33
describe("Generators Tests", () => {
44
it("should generate from simple query", () => {
55
const source = "SELECT user_name , id FROM users";
6-
76
const generator = new Generator([
87
{ id: "id1", user_name: "user1" },
98
{ id: "id2", user_name: "user2" },
109
]);
11-
1210
const results = generator.execute(source);
13-
1411
expect(results).toEqual([
1512
{ user_name: "user1", id: "id1" },
1613
{ user_name: "user2", id: "id2" },
@@ -19,62 +16,46 @@ describe("Generators Tests", () => {
1916

2017
it("should generate from simple query with where", () => {
2118
const source = "SELECT user_name , id FROM users where id = 'id1' ;";
22-
2319
const generator = new Generator([
2420
{ id: "id1", user_name: "user1" },
2521
{ id: "id2", user_name: "user2" },
2622
]);
27-
2823
const results = generator.execute(source);
29-
3024
expect(results).toEqual([{ user_name: "user1", id: "id1" }]);
3125
});
3226

3327
it("should generate from simple query with where", () => {
3428
const source =
3529
"SELECT user_name as username , id FROM users where id = 'id1' ;";
36-
3730
const generator = new Generator([
3831
{ id: "id1", user_name: "user1" },
3932
{ id: "id2", user_name: "user2" },
4033
]);
41-
4234
const results = generator.execute(source);
43-
4435
generator.source;
45-
4636
expect(results).toEqual([{ username: "user1", id: "id1" }]);
4737
});
4838

4939
it("should generate from simple query with where numeric", () => {
5040
const source =
5141
"SELECT user_name as username , id FROM users where id = 1 ;";
52-
5342
const generator = new Generator([
5443
{ id: 1, user_name: "user1" },
5544
{ id: 2, user_name: "user2" },
5645
]);
57-
5846
const results = generator.execute(source);
59-
60-
generator.source;
61-
6247
expect(results).toEqual([{ username: "user1", id: 1 }]);
6348
});
6449

6550
it("should generate from simple query with where numeric and group by", () => {
6651
const source =
6752
"SELECT user_name as username , id FROM users Group by user_name , id ;";
68-
6953
const generator = new Generator([
7054
{ id: 1, user_name: "user1" },
7155
{ id: 2, user_name: "user2" },
7256
]);
73-
7457
const results = generator.execute(source);
75-
7658
generator.source;
77-
7859
expect(results).toEqual({
7960
"1": [{ id: 1, username: "user1" }],
8061
"2": [{ id: 2, username: "user2" }],
@@ -84,16 +65,11 @@ describe("Generators Tests", () => {
8465
it("should generate from simple query with order by", () => {
8566
const source =
8667
"SELECT user_name as username , id FROM users order by user_name , id ;";
87-
8868
const generator = new Generator([
8969
{ id: 2, user_name: "user2" },
9070
{ id: 1, user_name: "user1" },
9171
]);
92-
9372
const results = generator.execute(source);
94-
95-
generator.source;
96-
9773
expect(results).toEqual([
9874
{ id: 1, username: "user1" },
9975
{ id: 2, username: "user2" },

__tests__/scanner/select.test.ts

+15
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,19 @@ describe("Scanner Tests", () => {
1414

1515
expect(scanner.tokens).toHaveLength(9);
1616
});
17+
18+
it("should scan a simple select statement with limit", () => {
19+
const source = `
20+
SELECT
21+
id,
22+
user_name as username
23+
from users
24+
limit 15
25+
`;
26+
27+
const scanner = new Scanner(source);
28+
scanner.scan();
29+
30+
expect(scanner.tokens).toHaveLength(11);
31+
});
1732
});

src/compiler/parser.ts

+3
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@ export class Parser {
118118
throw new Error("Expect at least one column / Expr after 'ORDER BY'");
119119
}
120120

121+
if (this.match(TokenType.LIMIT) && this.match(TokenType.NUMBER)) {
122+
}
123+
121124
return statement;
122125
}
123126

src/expressions/limit.expression.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ export class LimitExpression extends Expression {
88
constructor(public expression: Expression) {
99
super();
1010
}
11+
1112
public override accept<R>(visitor: Visitor<R>, context: any): R {
12-
//return visitor.visitLimitExpr(this, context);
13-
throw new Error("Method not implemented.");
13+
return visitor.visitLimitExpr(this, context);
1414
}
15+
1516
public override toLiteral<R>(): string {
1617
throw new Error("Method not implemented.");
1718
}

src/factory/factory.ts

+4
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ export class Factory {
4141
return order;
4242
}
4343

44+
public createLimitExpression(limit: Expression): LimitExpression {
45+
return new LimitExpression(limit);
46+
}
47+
4448
public createIdentifier(name: string, alias?: string): Identifier {
4549
return new Identifier(name, alias);
4650
}

src/visitors/js.visitor.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,14 @@ export class JsVisitor extends Visitor<string> {
8989
}
9090

9191
public visitGroupByExpr(expr: GroupByExpression, context?: any): string {
92-
//FIXME
9392
return expr.columns.map((node) => `'${node.accept(this)}'`).join(",");
9493
}
9594

9695
public visitNumericLiteralExpr(expr: NumericLiteral): string {
9796
return expr.value;
9897
}
98+
99+
public visitLimitExpr(expr: LimitExpression, context?: any): string {
100+
return expr.expression.accept(this);
101+
}
99102
}

src/visitors/visitor.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export abstract class Visitor<R> {
2828
public abstract visitIdentifier(expr: Identifier): R;
2929
public abstract visitSelectStmt(stmt: SelectStatement, context?: any): R;
3030
public abstract visitGroupByExpr(expr: GroupByExpression, context?: any): R;
31-
// public abstract visitLimitExpr(expr: LimitExpression, context?: any): R;
31+
public abstract visitLimitExpr(expr: LimitExpression, context?: any): R;
3232
public abstract visitOrderByExpr(expr: OrderExpression, context?: any): R;
3333
public abstract visitOrderByColumn(expr: OrderByColumn): R;
3434
}

0 commit comments

Comments
 (0)