@simpleview/sv-orion-client

3.0.3 • Public • Published

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 Microservices Support Teams channel.

Readme

Keywords

none

Package Sidebar

Install

npm i @simpleview/sv-orion-client

Weekly Downloads

5

Version

3.0.3

License

MIT

Unpacked Size

18.6 kB

Total Files

8

Last publish

Collaborators

  • davidlpons
  • owenallenaz
  • qman33
  • svjoshua
  • georgeyb-sv
  • mkes99
  • colin.booen
  • ssmith_sv
  • aglazebrook
  • rmaynes
  • csarantidessv
  • mikesan789
  • kristian.gonzalez
  • paul.riding
  • arkmuntasser
  • actionawesome
  • mcutshall
  • sv-mikael
  • korychinn_sv
  • leandrodalmassoglb
  • dlford
  • sloutrel