-
Notifications
You must be signed in to change notification settings - Fork 0
MySQL Query Builder API
Ilya edited this page Nov 4, 2024
·
1 revision
const queryBuilder = new QueryBuilder();select(...fields: string[]): QueryBuilderCreates a SELECT query
- Parameters: fields to select
- Returns: this for chaining
insert(table: string): QueryBuilder
values(data: object): QueryBuilderCreates an INSERT query
-
Parameters:
- table: table name
- data: object with data to insert
- Returns: this for chaining
update(table: string): QueryBuilder
set(data: object): QueryBuilderCreates an UPDATE query
-
Parameters:
- table: table name
- data: object with data to update
- Returns: this for chaining
delete(): QueryBuilderCreates a DELETE query
- Returns: this for chaining
where(field: string, operator: string, value: any): QueryBuilderAdds WHERE condition
-
Parameters:
- field: field name
- operator: comparison operator
- value: value to compare
- Returns: this for chaining
andWhere(field: string, operator: string, value: any): QueryBuilderAdds AND WHERE condition
- Throws: MySQLSyntaxError if no previous WHERE exists
orWhere(field: string, operator: string, value: any): QueryBuilderAdds OR WHERE condition
orderBy(field: string, direction: 'ASC'|'DESC'): QueryBuilderAdds ORDER BY clause
groupBy(field: string): QueryBuilderAdds GROUP BY clause
limit(limit: number): QueryBuilderLimits number of records
offset(offset: number): QueryBuilderSets query offset
join(table: string, condition: string): QueryBuilderAdds INNER JOIN
leftJoin(table: string, condition: string): QueryBuilderAdds LEFT JOIN
build(): {
prepared: string,
unprepared: string,
params: any[]
}Builds final query
-
Returns:
- prepared: prepared statement with parameters
- unprepared: raw SQL query with values
- params: array of parameters
const query = new QueryBuilder()
.select('id', 'name')
.from('users')
.where('age', '>', 18)
.andWhere('status', '=', 'active')
.orderBy('name', 'DESC')
.limit(10)
.build();
console.log(query.prepared); // SELECT id, name FROM users WHERE age > ? AND status = ? ORDER BY name DESC LIMIT ?
console.log(query.unprepared); // SELECT id, name FROM users WHERE age > 18 AND status = 'active' ORDER BY name DESC LIMIT 10
console.log(query.params); // [18, 'active', 10]