feat(tsview): add database and S3 handlers, tswatch/watch scripts, web utilities, assets and release config

This commit is contained in:
2026-01-25 11:02:53 +00:00
parent cf07f8cad9
commit afc32f3578
52 changed files with 1078 additions and 237 deletions

View File

@@ -87,6 +87,43 @@ export async function registerMongoHandlers(
)
);
// Create database (by creating a placeholder collection)
typedrouter.addTypedHandler(
new plugins.typedrequest.TypedHandler<interfaces.IReq_CreateDatabase>(
'createDatabase',
async (reqData) => {
try {
const client = await getMongoClient();
const db = client.db(reqData.databaseName);
// Create a placeholder collection to materialize the database
await db.createCollection('_tsview_init');
return { success: true };
} catch (err) {
console.error('Error creating database:', err);
return { success: false };
}
}
)
);
// Drop database
typedrouter.addTypedHandler(
new plugins.typedrequest.TypedHandler<interfaces.IReq_DropDatabase>(
'dropDatabase',
async (reqData) => {
try {
const client = await getMongoClient();
const db = client.db(reqData.databaseName);
await db.dropDatabase();
return { success: true };
} catch (err) {
console.error('Error dropping database:', err);
return { success: false };
}
}
)
);
// Create collection
typedrouter.addTypedHandler(
new plugins.typedrequest.TypedHandler<interfaces.IReq_CreateCollection>(
@@ -105,6 +142,24 @@ export async function registerMongoHandlers(
)
);
// Drop collection
typedrouter.addTypedHandler(
new plugins.typedrequest.TypedHandler<interfaces.IReq_DropCollection>(
'dropCollection',
async (reqData) => {
try {
const client = await getMongoClient();
const db = client.db(reqData.databaseName);
await db.dropCollection(reqData.collectionName);
return { success: true };
} catch (err) {
console.error('Error dropping collection:', err);
return { success: false };
}
}
)
);
// Find documents
typedrouter.addTypedHandler(
new plugins.typedrequest.TypedHandler<interfaces.IReq_FindDocuments>(