@ducttape/ducttape-driver
v1.1.0
Published
The driver for any DuctTape instance
Readme
DuctTape Driver
This library is intended for the use with the DuctTape Core and a Postgrest bridge server. It is useful if the compilation of a custom driver is not desired. This driver comes with the API calls for app users and admins to have a one-stop solution ready for all needs. It has @supabase/postgrest-js included for database access.
See ducttape-starter for further instructions.
Warning: This application is still under heavy development - any business-critical operation is currently discouraged.
Getting started
Install the driver using npm install @ducttape/ducttape-driver and set up the API. Ideally you do it in a service file or class.
Here is an example for Angular:
import { inject, Injectable } from '@angular/core';
import {
AdminAuthApi,
AdminUserManagementApi,
UserAuthApi,
UserConfigurationApi,
LoginConfigurationApi,
LogApi,
SQLExecutionApi,
Configuration,
ConfigurationParameters,
createDatabaseDriver,
SessionApi,
StorageApi,
} from '@ducttape/ducttape-driver';
import { JwtService } from './jwt.service';
@Injectable({
providedIn: 'root',
})
export class ApiService {
jwt = inject(JwtService);
private getConfig(): Configuration {
let configParams: ConfigurationParameters = {};
const token = this.jwt.getToken(); //fetch a JWT from localStorage, cookie, etc.
configParams.basePath = getApiBaseUrl(); //set API base url
if (token) {
configParams = {
...configParams,
accessToken: token,
};
}
return new Configuration(configParams);
}
getDatabaseApi() {
const token = this.jwt.getToken();
const postgresUrl = 'http://localhost:8081'; // Set here postgrest url
if (token) {
return createDatabaseDriver(postgresUrl, {
Authorization: `Bearer ${this.jwt.getToken()}`, //fetch a JWT from localStorage, cookie, etc.
});
} else {
return createDatabaseDriver(postgresUrl);
}
}
getAdminAuthApi() {
return new AdminAuthApi(this.getConfig());
}
getAdminUserManagementApi() {
return new AdminUserManagementApi(this.getConfig());
}
getUserConfigurationApi() {
return new UserConfigurationApi(this.getConfig());
}
getUserAuthApi() {
//Only used for the app frontend.
return new UserAuthApi(this.getConfig());
}
getSessionApi() {
return new SessionApi(this.getConfig());
}
getLoginConfigurationApi() {
return new LoginConfigurationApi(this.getConfig());
}
getLogApi() {
return new LogApi(this.getConfig());
}
getSqlExecutionApi() {
return new SQLExecutionApi(this.getConfig());
}
getStorageApi() {
return new StorageApi(this.getConfig());
}
}
