Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/g3n1us/g3n1us_elementary_model
Import APIs into a local PouchDB and provide querying and models
https://github.com/g3n1us/g3n1us_elementary_model
Last synced: 24 days ago
JSON representation
Import APIs into a local PouchDB and provide querying and models
- Host: GitHub
- URL: https://github.com/g3n1us/g3n1us_elementary_model
- Owner: g3n1us
- Created: 2017-11-24T02:06:17.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-07-10T01:16:27.000Z (over 1 year ago)
- Last Synced: 2024-08-10T09:18:09.599Z (5 months ago)
- Language: JavaScript
- Size: 600 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# G3N1US Elementary Model
## Get Started
```javascript
class Animal extends g3n1us.Model{
constructor(){
super(arguments[0]);
this.connection.endpoint = '//example.com/api/files.json';
}
}
```## About
G3N1US Elementary Model lets you keep your application's logic separate from your API's schema. API's go away, change, sometimes don't work. Keep your app untethered from your API.`````javascript
class Animal extends g3n1us.Model{
constructor(){
super(arguments[0]);
this.connection.endpoint = '//example.com/api/files.json';
// Add headers to the api request
this.headers = {'Api-Key': '8675309-90210'}
// filterResponse is called on the raw output from the API.
// You can modify each response object, or get a nested object in the response.
// Each model must have an 'id' attribute! This is a great place to add this if needed.
this.filterResponse = function(response){
return response.map(function(v){
v.id = v.specied_id
return v;
});
}
}
}// After declaring a model, call add_model to add it to the application container
g3n1us.Container.add_model(Animal);`````
## Querying
Querying is done against a static instance of your model### Find an item by it's `id`
```javascript
Animal.find('187').then(animal => {
console.log('I found the animal! ' + animal);
});
```### Query for items by attribute
```javascript
Animal.where('has_fur', true).then((response) => {
console.log('Animals are now inside the plural form of the model name: response.animals = ', response.animals);
});
``````javascript
Animal.where('legs', '>=', 4).then((response) => {
console.log('Only four or more legs: response.animals = ', response.animals);
});
```
### Other operators
| | |
| ----------- | --------------------------- |
| `'='` | equals |
| `'>'` | greater than |
| `'<'` | less than |
| `'>='` | greater than or equal to |
| `'<='` | less than or equal to |
| `'exists'` | exists/not null |
| `'!='` | not equal to |
| `'<>'` | not equal to |
| `'in'` | in array |
| `'!in'` | not in array |
| `'out'` | not in array |
| `'regex'` | matches regular expression |
> Note, this is always the operator if a regex is provided as the query argument_____
> Don't like Promises?!
All query methods can also accept a callback as the last argument```javascript
Animal.find('187', function(animal){
console.log('I found the animal! ' + animal);
});
```### Relations
> TODO### Saving Models
> TODO