depresto
Version:
Why am I doing this to myself
87 lines (84 loc) • 1.97 kB
Markdown
# Depresto
This is a super duper mediocre library that allows you to build dynamic prestodb queries from JSON
## Implemented Functionality
#### Basic select queries
```
const depresto = require('depresto');
const query = depresto({
from: 'tablename',
select: ['column_a', 'column_b'],
});
// query = 'SELECT column_a, column_b FROM tablename;'
```
If the `select` key is optional and if ommitted will be replaced with `*`
#### Simple conditional queries
```
const query = depresto({
from: 'tablename',
where: {
col_a: 'hello',
col_b: 'world',
}
});
// query = 'SELECT * FROM tablename WHERE col_a = 'hello' AND col_b = 'world';
```
#### OR conditions
```
const query = depresto({
from: 'tablename',
where: {
$or: [
{ col_a: 'hello' },
{ col_b: 'world },
]
}
});
// query = SELECT * FROM tablename WHERE (col_a = 'hello' OR col_b = 'world');
```
#### OR/AND combined
```
const query = depresto({
from: 'tablename',
where: {
col_a: 'hello',
$or: [
{ col_b: 'world' },
{ col_b: 'pat' },
]
}
});
// query = SELECT * FROM tablename WHERE col_a = 'hello' AND (col_b = 'world' OR col_b = 'pat');
```
#### IN list
```
const query = depresto({
from: 'tablename',
where: {
$in: { col_a: [1, 2, 3] },
}
});
// query = SELECT * FROM tablename WHERE contains(array[1, 2, 3], col_a);
```
#### NOT IN list
```
const query = depresto({
from: 'tablename',
where: {
$notIn: { col_a: [1, 2, 3] },
}
});
// query = SELECT * FROM tablename WHERE col_a NOT IN array[1, 2, 3];
```
#### Comparison operators
```
const query = depresto({
from: 'tablename',
where: {
$gt: { col_a: 10 },
$gte: { col_b: 20 },
$lt: { col_c: 30 },
$lte: { col_d: 40 },
}
});
// query = SELECT * FROM tablename WHERE col_a > 10 AND col_b >= 20 AND col_c < 30 AND col_d <= 40;
```