167 lines
4.8 KiB
Markdown
167 lines
4.8 KiB
Markdown
# Datasquirel
|
|
|
|
This package requires an account with [datasquirel](https://datasquirel.com/create-account), or a self hosted instance of the datasquirel web admin with your URL. You can also use the SQL query aspect if you provide needed credentials for a database connection, however in this instance the static files feature is disabled.
|
|
|
|
## Installation
|
|
|
|
First add the npm registry to your .npmrc file:
|
|
|
|
```bash
|
|
@moduletrace:registry=https://git.tben.me/api/packages/moduletrace/npm/
|
|
```
|
|
|
|
After setting up the registry you can install the package by running
|
|
|
|
```bash
|
|
npm install @moduletrace/datasquirel
|
|
```
|
|
|
|
Once the package is installed, you can import the library using `require` approach:
|
|
|
|
```js
|
|
const datasquirel = require("@moduletrace/datasquirel");
|
|
```
|
|
|
|
Or you can use ES6 module imports:
|
|
|
|
```js
|
|
import datasquirel from "@moduletrace/datasquirel";
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Fetch Data
|
|
|
|
This method requires a readonly key or fullaccess API key gotten from [datasquirel](https://datasquirel.com/). It uses a basic https get request paired with some query params.
|
|
|
|
```js
|
|
const datasquirel = require("@moduletrace/datasquirel");
|
|
|
|
const getData = await datasquirel.get({
|
|
key: "aldhkf89asdflksdafh908asdfjkhasdf", // Readonly API Key
|
|
db: "my_database", // Database name slug (Eg. Db Name => My Database, Db Slug => my_database)
|
|
query: "SELECT * FROM blog_posts", // SQL Query
|
|
user_id: 129, // Your User Id: check settings page
|
|
});
|
|
```
|
|
|
|
> NOTE: You can skip the `user_id` parameter by adding an environment variable named `DSQL_API_USER_ID`
|
|
|
|
Datasquirel uses all conventional SQL query commands. However you can only use the `SELECT` command when using a readonly API key.
|
|
|
|
### Post Data
|
|
|
|
This method requires a fullaccess API key gotten from [datasquirel](https://datasquirel.com/). You can perform a basic fetch with this method, as well as more complex operations like `UPDATE`, `DELETE` and `INSERT`.
|
|
|
|
```js
|
|
const datasquirel = require("@moduletrace/datasquirel");
|
|
|
|
const postData = await datasquirel.post({
|
|
key: "aldhkf89asdflksdafh908asdfjkhasdf", // Fullaccess API Key
|
|
payload: {
|
|
action: "insert", // OR "update" OR "delete" OR "select"
|
|
data: {
|
|
user_id: "19aisdn123",
|
|
user_first_name: "John",
|
|
user_last_name: "Doe",
|
|
},
|
|
table: "users",
|
|
user_id: 271,
|
|
},
|
|
});
|
|
```
|
|
|
|
You can simply replace the `payload` object with an SQL string and it does everything you provide in the SQL command.
|
|
|
|
```js
|
|
const datasquirel = require("@moduletrace/datasquirel");
|
|
|
|
const postData = await datasquirel.post({
|
|
key: process.env.FULL_ACCESS_API_KEY,
|
|
payload: "SELECT * FROM blog_posts WHERE user_id='as09d7nasd90'",
|
|
user_id: 271,
|
|
});
|
|
```
|
|
|
|
You can add a condition to the `payload` object to filter the results
|
|
|
|
```js
|
|
const datasquirel = require("@moduletrace/datasquirel");
|
|
|
|
const postData = await datasquirel.post({
|
|
key: process.env.FULL_ACCESS_API_KEY,
|
|
payload: {
|
|
action: "delete",
|
|
condition: `WHERE user_id='21adwei9jewr' AND type='buyers'`,
|
|
table: "users",
|
|
},
|
|
user_id: 271,
|
|
});
|
|
```
|
|
|
|
You can use `identifierColumnName` and `identifierValue` when updating an entry.
|
|
|
|
```js
|
|
const datasquirel = require("@moduletrace/datasquirel");
|
|
|
|
const postData = await datasquirel.post({
|
|
key: process.env.FULL_ACCESS_API_KEY,
|
|
payload: {
|
|
action: "update",
|
|
table: "users",
|
|
identifierColumnName: "id",
|
|
identifierValue: "21adwei9jewr",
|
|
data: {
|
|
first_name: "Mary",
|
|
last_name: "Spencer",
|
|
},
|
|
},
|
|
user_id: 271,
|
|
});
|
|
```
|
|
|
|
### Upload Image
|
|
|
|
This method requires is similar to the `post` method, but with different parameters.
|
|
|
|
```js
|
|
const datasquirel = require("@moduletrace/datasquirel");
|
|
|
|
const postData = await datasquirel.uploadImage({
|
|
key: process.env.FULL_ACCESS_API_KEY,
|
|
payload: {
|
|
imageData: "6ejsiua2i29ndsajkfn9n==", // Image in base64
|
|
imageName: `awesome-waterfalls`,
|
|
mimeType: "jpg", // optional
|
|
thumbnailSize: 120, // optional === This measurement is in pixels(px)
|
|
},
|
|
user_id: 271,
|
|
});
|
|
```
|
|
|
|
### Local Querying
|
|
|
|
You can query directly from an SQL database if you provide these environment variables in your `.env` file:
|
|
|
|
```conf
|
|
DSQL_DB_HOST=
|
|
DSQL_DB_PORT=
|
|
DSQL_DB_USERNAME=
|
|
DSQL_DB_PASSWORD=
|
|
DSQL_DB_NAME=
|
|
DSQL_SSL_DIR=
|
|
```
|
|
|
|
The ssl directory **_must_** contain a file named `ca-cert.pem`. `DSQL_DB_PORT` defaults to **3306** if not provided.
|
|
|
|
### Remote Querying
|
|
|
|
You can query from a self hosted installation of datasquirel. Just add these environment variables:
|
|
|
|
```conf
|
|
DSQL_API_REMOTE_HOST=
|
|
DSQL_API_REMOTE_HOST_PORT=
|
|
```
|
|
|
|
If these aren't provided it defaults to `datasquirel.com`.
|