-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsodaQueryBuilder.ts
42 lines (35 loc) · 1.04 KB
/
sodaQueryBuilder.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { QueryBuilder } from '../interfaces';
export class SodaQueryBuilder implements QueryBuilder {
private _select: string[] = [];
private _lat: string = '';
private _long: string = '';
private _limit: number = -1;
private _distance: number = -1;
select(field: string): QueryBuilder {
throw new Error('Method not implemented.');
}
withDistance(distance: number): QueryBuilder {
this._distance = distance;
return this;
}
withLat(lat: string): QueryBuilder {
this._lat = lat;
return this;
}
withLong(long: string): QueryBuilder {
this._long = long;
return this;
}
withLimit(limit: number): QueryBuilder {
this._limit = limit;
return this;
}
buildQuery(): string {
if (this._lat === '' || this._long === '') {
throw new Error(
'SodaQueryBuilder :: User must set both lat and long before bulding query...',
);
}
return `select * where status=='APPROVED' and within_circle(location,${this._lat},${this._long},${this._distance}) limit ${this._limit}`;
}
}