postgrester
postgrester copied to clipboard
Isomorphic PostgREST API Client for Javascript and Typescript.
postgrester
⚠️ THIS PACKAGE IS DEPRECATED AND NO LONGER MAINTAINED, YOU CAN USE @supabase/postgrest-js AS A REPLACEMENT.
Isomorphic PostgREST API Client for Javascript and Typescript.
Supported PostgREST versions:
v9.0.0v8.0.0
- Gettting Started
- Example
- API
- Options
- Vertical Filtering (columns) Methods
- select()
- Hoizontal Filtering (rows) Methods
- is()
- eq()
- neq()
- gt()
- gte()
- lt()
- lte()
- in()
- like()
- ilike()
- not
- and
- or
- Ordering Methods
- orderBy()
- Pagination Methods
- page()
- Request Methods
- get()
- post() / Insert
- post() / Upsert
- patch()
- put()
- delete()
- Contribute
- License
Gettting Started
npm i postgrester
Example
import { create } from "postgrester";
const postgrestClient = create({
axiosConfig: { baseURL: "https://api.example.com" }
});
(async () => {
const { data, pagesLength } = await postgrestClient
.select("*")
.select("author(first_name,last_name)")
.is("is_published", true)
.not.is("isbn", null)
.eq("publication_year", 1970)
.in("language_code", ["en-UK", "en-US"])
.ilike("title", "island")
.like("author.last_name", "Hemingway")
.orderBy("publication_year", true) // `true` = DESC
.orderBy("title")
.page(3, 25) // 4th page with 25 items per page
.get("/books", true); // `true` = require the total `pagesLength` value to be calculated
})();
API
Options
When creating the instance via create([options]):
| Property | Type | Default | Description |
|---|---|---|---|
axiosConfig |
AxiosRequestConfig |
{} |
Axios config called with axios.create(). |
axiosInstance |
AxiosInstance |
null |
Axios custom instance. |
baseUri |
string |
"" |
API URL. Deprecated |
:warning: If you provide an axios instance via the
axiosInstanceproperty, it's useless to setaxiosConfigsince it would be overridden by your instance.
:warning:
baseUritakes precedence overaxiosConfig.baseURL. To avoid any confusion,baseUriwill be deprecated in the next minor version release and should be removed in the next major one.
Vertical Filtering (columns) Methods
select()
| Name | Type | Default | Examples |
|---|---|---|---|
selector |
string |
required | "*", "author", "category(id,label)" |
You can also rename them by inserting a colon: original_column_name:new_column_name.
Hoizontal Filtering (rows) Methods
is()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "author", "category.label" |
value |
boolean | null |
required |
eq()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "author", "category.label" |
value |
boolean | number | null | string |
required | "Leo Tolstoy" |
withQuotes |
boolean |
false |
Note:
booleanandnullvalues will be converted into anis().
neq()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "author", "category.label" |
value |
boolean | number | null | string |
required | "Leo Tolstoy" |
withQuotes |
boolean |
false |
Note:
booleanandnullvalues will be converted into a negatedis().
gt()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "quantity", "category.updated_at" |
value |
number | string |
required | |
isInclusive |
boolean |
false |
gte()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "quantity", "category.updated_at" |
value |
number | string |
required |
Note: This method is an alias for
gt()with<isInclusive>set totrue.
lt()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "quantity", "category.updated_at" |
value |
number | string |
required | |
isInclusive |
boolean |
false |
lte()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "quantity", "category.updated_at" |
value |
number | string |
required |
Note: This method is an alias for
lt()with<isInclusive>set totrue.
in()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "author", "category.label" |
value |
Array<number | string> |
required | ["Leo Tolstoy", "Fyodor Dostoevsky"] |
withQuotes |
boolean |
false |
like()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "author", "category.label" |
value |
string |
required | "Tolstoy" |
ilike()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "author", "category.label" |
value |
string |
required | "tolstoy" |
not
This getter ONLY negates the FIRST following filtering method.
For example, postgrestClient.not.is("category_id", null).ilike("author", "dostoevsky") will
negate the is() filter but not the ilike() one.
and
This getter condition ALL the following filtering methods to be conjuncted as "ands".
For example, postgrestClient.and.is("category_id", null).ilike("author", "dostoevsky") will
intersect both is() and ilike() filters.
or
This getter condition ALL the following filtering methods to be conjuncted as "ors".
For example, postgrestClient.and.is("category_id", null).ilike("author", "dostoevsky") will
unite both is() and ilike() filters.
Ordering Methods
orderBy()
| Name | Type | Default | Examples |
|---|---|---|---|
column |
string |
required | "author", "category.label" |
isDesc |
boolean |
false |
Pagination Methods
page()
| Name | Type | Default | Examples |
|---|---|---|---|
pageIndex |
number |
required | 0, 123 |
limit |
number |
10 |
Request Methods
All request methods are asynchronous promises.
get()
| Name | Type | Default | Examples |
|---|---|---|---|
path |
string |
required | "/books" |
withPagesLength |
boolean |
false |
Return value:
Promise<{
data: any;
pagesLength: number;
totalLength: number;
}>
:warning: Important
BothpagesLengthandtotalLengthwill equal-1if<withPagesLength>parameter isfalseor if the length couldn't be resolved.
post() / Insert
| Name | Type | Default | Examples |
|---|---|---|---|
path |
string |
required | "/books" |
data |
object |
required | |
options |
{ return?: 'headers-only' | 'representation' } |
Return value:
Promise<void>
or (with { return: "representation" }):
Promise<{
data: T
}>
post() / Upsert
:warning: Important
Ifdatais an array, it will be considered as an upsert.
In this case, if you don't specify otherwise inoptions,merge-duplicatesresolution will be used by default.
| Name | Type | Default | Examples |
|---|---|---|---|
path |
string |
required | "/books" |
data |
object[] |
required | |
options |
{ onConflict?: string, resolution?: "ignore-duplicates" | "merge-duplicates", return?: 'headers-only' | 'representation' } |
{ resolution: "merge-duplicates" } |
Return value:
Promise<void>
or (with { return: "representation" }):
Promise<{
data: T[]
}>
patch()
| Name | Type | Default | Examples |
|---|---|---|---|
path |
string |
required | "/books" |
data |
object |
required |
Return value:
Promise<void>
put()
| Name | Type | Default | Examples |
|---|---|---|---|
path |
string |
required | "/books" |
data |
object |
required |
Return value:
Promise<void>
delete()
| Name | Type | Default | Examples |
|---|---|---|---|
| path | string |
required | "/books" |
options |
{ return?: 'headers-only' | 'representation' } |
Return value:
Promise<void>
or (with { return: "representation" }):
Promise<{
data: T[]
}>
Contribute
Please check our contributing documentation.
License
This package and its sources are distributed under Apache 2.0.