69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
import { Service } from '../service';
|
|
import { AppwriteException, Client } from '../client';
|
|
import type { Models } from '../models';
|
|
import type { UploadProgress, Payload } from '../client';
|
|
|
|
export class Graphql extends Service {
|
|
|
|
constructor(client: Client)
|
|
{
|
|
super(client);
|
|
}
|
|
|
|
/**
|
|
* GraphQL endpoint
|
|
*
|
|
* Execute a GraphQL mutation.
|
|
*
|
|
* @param {object} query
|
|
* @throws {AppwriteException}
|
|
* @returns {Promise}
|
|
*/
|
|
async query(query: object): Promise<{}> {
|
|
if (typeof query === 'undefined') {
|
|
throw new AppwriteException('Missing required parameter: "query"');
|
|
}
|
|
|
|
const apiPath = '/graphql';
|
|
const payload: Payload = {};
|
|
|
|
if (typeof query !== 'undefined') {
|
|
payload['query'] = query;
|
|
}
|
|
|
|
const uri = new URL(this.client.config.endpoint + apiPath);
|
|
return await this.client.call('post', uri, {
|
|
'x-sdk-graphql': 'true',
|
|
'content-type': 'application/json',
|
|
}, payload);
|
|
}
|
|
|
|
/**
|
|
* GraphQL endpoint
|
|
*
|
|
* Execute a GraphQL mutation.
|
|
*
|
|
* @param {object} query
|
|
* @throws {AppwriteException}
|
|
* @returns {Promise}
|
|
*/
|
|
async mutation(query: object): Promise<{}> {
|
|
if (typeof query === 'undefined') {
|
|
throw new AppwriteException('Missing required parameter: "query"');
|
|
}
|
|
|
|
const apiPath = '/graphql/mutation';
|
|
const payload: Payload = {};
|
|
|
|
if (typeof query !== 'undefined') {
|
|
payload['query'] = query;
|
|
}
|
|
|
|
const uri = new URL(this.client.config.endpoint + apiPath);
|
|
return await this.client.call('post', uri, {
|
|
'x-sdk-graphql': 'true',
|
|
'content-type': 'application/json',
|
|
}, payload);
|
|
}
|
|
};
|