arcstrum-sdk
Version:
Arcstrum SDK for authentication and database management
39 lines (38 loc) • 2.42 kB
JavaScript
// db-express-middleware.ts
import { ArcstrumDBClient } from '../db.js';
import { ArcstrumMediaClient } from '../media.js'; // import your new media client
export function ArcstrumMiddleware({ userId, token, apiBase, mediaApiBase }) {
const dbClient = new ArcstrumDBClient({ userId, token, apiBase });
const mediaClient = new ArcstrumMediaClient({ userId, token, apiBase: mediaApiBase || apiBase });
return async (req, res, next) => {
req.arcstrum = {
// DB client proxies
listDatabases: () => dbClient.listDatabases(),
createDatabase: (dbFile) => dbClient.createDatabase(dbFile),
deleteDatabase: (dbFile) => dbClient.deleteDatabase(dbFile),
renameDatabase: (oldName, newName) => dbClient.renameDatabase(oldName, newName),
getTables: (dbFile) => dbClient.getTables(dbFile),
queryTable: (dbFile, table) => dbClient.queryTable(dbFile, table),
insertRow: (dbFile, table, row) => dbClient.insertRow(dbFile, table, row),
deleteRow: (dbFile, table, row) => dbClient.deleteRow(dbFile, table, row),
execSql: (dbFile, sql) => dbClient.execSql(dbFile, sql),
validateSql: (sql) => dbClient.validateSql(sql),
getUsageAnalytics: () => dbClient.getUsageAnalytics(),
getTableSchema: (dbFile, table) => dbClient.getTableSchema(dbFile, table),
getDbStats: (dbFile) => dbClient.getDbStats(dbFile),
getPreviewRows: (dbFile, table, limit) => dbClient.getPreviewRows(dbFile, table, limit),
getColumnInfo: (dbFile, table) => dbClient.getColumnInfo(dbFile, table),
searchTable: (dbFile, table, filters) => dbClient.searchTable(dbFile, table, filters),
getDbMetadata: (dbFile) => dbClient.getDbMetadata(dbFile),
updateDbMetadata: (dbFile, metadata) => dbClient.updateDbMetadata(dbFile, metadata),
deleteDbMetadata: (dbFile) => dbClient.deleteDbMetadata(dbFile),
query: (dbFile, sql) => dbClient.query(dbFile, sql),
// Media client proxies
uploadMediaFile: (file) => mediaClient.uploadFile(file),
listMediaFiles: () => mediaClient.listFiles(),
getMediaFileUrl: (filename) => mediaClient.getFileUrl(filename),
deleteMediaFile: (filename) => mediaClient.deleteFile(filename),
};
next();
};
}