niledatabase
Version:
Command line interface for Nile databases
87 lines (86 loc) • 2.8 kB
TypeScript
import { Developer, Database, Credentials } from './types';
export interface Tenant {
id: string;
name?: string;
}
export interface CreateTenantRequest {
name: string;
id?: string;
}
export interface NileAPIOptions {
token: string | undefined;
debug?: boolean;
controlPlaneUrl?: string;
dbHost?: string;
}
export interface PostgresConnection {
host: string;
database: string;
user: string;
password: string;
port?: number;
}
export interface Workspace {
id: string;
slug: string;
name: string;
created?: string;
}
export interface CreateUserRequest {
email: string;
password: string;
name?: string;
givenName?: string;
familyName?: string;
picture?: string;
}
export interface User {
id: string;
email: string;
name?: string;
givenName?: string;
familyName?: string;
picture?: string;
emailVerified?: string;
created: string;
updated: string;
tenants?: string[];
}
export interface UpdateUserRequest {
name?: string;
givenName?: string;
familyName?: string;
picture?: string;
}
export declare class NileAPI {
private controlPlaneClient;
private userClient;
private static DEFAULT_CONTROL_PLANE_URL;
private static DEFAULT_USER_URL;
private debug;
private token;
private controlPlaneUrl;
private userUrl;
private dbHost?;
constructor(options: NileAPIOptions);
private addDebugLogging;
getDatabaseConnection(workspaceSlug: string, databaseName: string): Promise<PostgresConnection>;
getDeveloperInfo(): Promise<Developer>;
listDatabases(workspaceSlug: string): Promise<Database[]>;
createDatabase(workspaceSlug: string, name: string, region: string): Promise<Database>;
getDatabase(workspaceSlug: string, databaseName: string): Promise<Database>;
deleteDatabase(workspaceSlug: string, databaseName: string): Promise<void>;
listDatabaseCredentials(workspaceSlug: string, databaseName: string): Promise<Credentials[]>;
createDatabaseCredentials(workspaceSlug: string, databaseName: string): Promise<Credentials>;
listRegions(workspaceSlug: string): Promise<string[]>;
listWorkspaces(): Promise<Workspace[]>;
getWorkspace(workspaceSlug: string): Promise<Workspace>;
getDatabaseId(workspaceSlug: string, databaseName: string): Promise<string>;
createUser(databaseId: string, user: CreateUserRequest, options?: {
tenantId?: string;
newTenantName?: string;
}): Promise<User>;
getUserTenants(databaseId: string, userId: string): Promise<Tenant[]>;
updateUser(databaseId: string, userId: string, updates: UpdateUserRequest): Promise<User>;
removeUserFromTenant(databaseId: string, userId: string, tenantId: string): Promise<void>;
}