@simpleview/sv-orion-client
v3.0.2
Published
Client for communicating with sv-orion
Downloads
5
Maintainers
Keywords
Readme
sv-orion-client
Client for communicating with the sv-orion
GraphQL system.
It is build in TypeScript and has one peer dependency of @simpleview/sv-graphql-client
.
OS Support
The expectation is that this application will be installed in Linux using sv-kubernetes.
Prerequisites
Install
Using npm:
npm install @simpleview/sv-orion-client
Using yarn:
yarn install @simpleview/sv-orion-client
Update
To update to the latest version, rerun the install command.
Authentication Requirements
Interactions with sv-orion
require authentication as a Simpleview user.
Use a Google Service Account when interacting with the service on behalf of a product.
const { AuthPrefix } = require("@simpleview/sv-auth-client");
const { GraphServer } = require("@simpleview/sv-graphql-client");
async function serviceAccountToken() {
const service_account = JSON.parse(SERVICE_ACCOUNT_JSON);
const { auth } = new GraphServer({
graphUrl: AUTH_GRAPHQL_URL,
prefixes: [AuthPrefix]
});
// authorize the service_account return the token
const { token } = await auth.login_service_account({
input: {
email: service_account.client_email,
private_key: service_account.private_key
},
fields: `
success
token
`
});
return token;
}
The token
should be added to the context
for each function call.
Implementation & Usage
To see the input parameters and output fields of an endpoint, view the Schema in the GraphQL Explorer at https://graphql.simpleviewinc.com/ for the corresponding GraphQL query.
OrionPrefix
OrionPrefix
can be loaded into the sv-graphql-client
GraphServer
to use as a client library for accessing orion
in GraphQL.
JavaScript:
const { OrionPrefix } = require("@simpleview/sv-orion-client");
const { GraphServer } = require("@simpleview/sv-graphql-client");
module.exports = new GraphServer({ graphUrl: GRAPHQL_URL, prefixes: [OrionPrefix] });
TypeScript:
import { OrionPrefix } from "@simpleview/sv-orion-client";
import { GraphServer } from "@simpleview/sv-graphql-client";
export default new GraphServer({ graphUrl: GRAPHQL_URL, prefixes: [OrionPrefix] });
Where you are making server requests:
JavaScript:
const { orion } = require("./orionGraphServer");
TypeScript:
import { orion } from "./orionGraphServer";
OrionPrefix.tables
This method wraps the orion.tables
GraphQL query.
const result = await orion.tables({
fields: `
count
docs {
name
fields
}
`,
filter: {
name: "your_table_name"
},
context: {
acct_id: "sv-all",
token // from serviceAccountToken call
}
});
OrionPrefix.tables_insert
This method wraps the orion.tables_insert
GraphQL mutation.
const result = await orion.tables_insert({
input: {
name: "your_table_name",
fields: [
{
name: "name",
type: "string"
},
{
name: "locations",
type: "object",
mode: "repeated",
fields: [
{
name: "latitude",
type: "number"
},
{
name: "longitude",
type: "number"
}
]
}
],
additional_fields: ["timestamp", "user_agent", "referer"]
},
fields: "success message doc { name fields }"
context: {
acct_id: "sv-all",
token // from serviceAccountToken call
}
});
OrionPrefix.tables_remove
This method wraps the orion.remove
GraphQL mutation.
const result = await orion.tables_field_insert({
input: {
name: "your_table_name"
},
fields: "success message",
context: {
acct_id: "sv-all",
token // from serviceAccountToken call
}
});
OrionPrefix.tables_field_insert
This method wraps the orion.tables_field_insert
GraphQL mutation.
const result = await orion.tables_field_insert({
input: {
name: "your_table_name",
field: {
name: "new_field",
type: "string"
}
},
fields: "success message doc { name fields }"
context: {
acct_id: "sv-all",
token // from serviceAccountToken call
}
});
OrionPrefix.tables_additional_field_insert
This method wraps the orion.tables_additional_field_insert
GraphQL mutation.
const result = await orion.tables_additional_field_insert({
input: {
name: "your_table_name",
additional_field: "timestamp"
},
fields: "success message doc { name fields }",
context: {
acct_id: "sv-all",
token // from serviceAccountToken call
}
});
OrionPrefix.search
This method wraps the orion.search
GraphQL query.
const = await orion.search({
filter: {
table: "test1",
fields: ["name", "locations", "timestamp"]
where: [
{
field: "name",
operator: "eq",
value: "required_value"
},
{
field: "timestamp",
operator: "gt",
value: "2023-01-01T09:00:00.000Z"
}
},
options: {
limit: 1,
sort: {
field: "timestamp",
dir: "asc"
}
},
fields: "docs count",
context: {
token // from serviceAccountToken call
}
})
OrionPrefix.log
This method wraps the orion.log
GraphQL mutation.
const result = await orion.log({
input: {
table: "your_table_name",
entries: [
{
name: "entry 1",
count: 23
},
{
name: "entry 2",
count: 34
}
]
},
fields: "success message results { success message entry } errors { success message entry }",
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});
Related Documentation
Troubleshooting
For any assistance please reach out on the sv-orion Slack channel.