Files
tsview/ts/interfaces/index.ts
2026-01-23 22:15:51 +00:00

437 lines
9.2 KiB
TypeScript

import type * as plugins from '../plugins.js';
/**
* Configuration for S3 connection
*/
export interface IS3Config {
endpoint: string;
port?: number;
accessKey: string;
accessSecret: string;
useSsl?: boolean;
region?: string;
}
/**
* Configuration for MongoDB connection
*/
export interface IMongoConfig {
mongoDbUrl: string;
mongoDbName: string;
}
/**
* Combined configuration for tsview
*/
export interface ITsViewConfig {
s3?: IS3Config;
mongo?: IMongoConfig;
}
/**
* Environment configuration from .nogit/env.json (gitzone service format)
*/
export interface IEnvConfig {
MONGODB_URL?: string;
MONGODB_HOST?: string;
MONGODB_PORT?: string;
MONGODB_USER?: string;
MONGODB_PASS?: string;
MONGODB_NAME?: string;
S3_HOST?: string;
S3_PORT?: string;
S3_ACCESSKEY?: string;
S3_SECRETKEY?: string;
S3_BUCKET?: string;
S3_ENDPOINT?: string;
S3_USESSL?: boolean | string;
}
// ===========================================
// TypedRequest interfaces for S3 API
// ===========================================
export interface IReq_ListBuckets extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_ListBuckets
> {
method: 'listBuckets';
request: {};
response: {
buckets: string[];
};
}
export interface IReq_CreateBucket extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_CreateBucket
> {
method: 'createBucket';
request: {
bucketName: string;
};
response: {
success: boolean;
};
}
export interface IReq_DeleteBucket extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_DeleteBucket
> {
method: 'deleteBucket';
request: {
bucketName: string;
};
response: {
success: boolean;
};
}
export interface IS3Object {
key: string;
size?: number;
lastModified?: string;
isPrefix?: boolean;
}
export interface IReq_ListObjects extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_ListObjects
> {
method: 'listObjects';
request: {
bucketName: string;
prefix?: string;
delimiter?: string;
};
response: {
objects: IS3Object[];
prefixes: string[];
};
}
export interface IReq_GetObject extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_GetObject
> {
method: 'getObject';
request: {
bucketName: string;
key: string;
};
response: {
content: string; // base64
contentType: string;
size: number;
lastModified: string;
};
}
export interface IReq_GetObjectMetadata extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_GetObjectMetadata
> {
method: 'getObjectMetadata';
request: {
bucketName: string;
key: string;
};
response: {
contentType: string;
size: number;
lastModified: string;
};
}
export interface IReq_PutObject extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_PutObject
> {
method: 'putObject';
request: {
bucketName: string;
key: string;
content: string; // base64
contentType: string;
};
response: {
success: boolean;
};
}
export interface IReq_DeleteObject extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_DeleteObject
> {
method: 'deleteObject';
request: {
bucketName: string;
key: string;
};
response: {
success: boolean;
};
}
export interface IReq_CopyObject extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_CopyObject
> {
method: 'copyObject';
request: {
sourceBucket: string;
sourceKey: string;
destBucket: string;
destKey: string;
};
response: {
success: boolean;
};
}
// ===========================================
// TypedRequest interfaces for MongoDB API
// ===========================================
export interface IMongoDatabase {
name: string;
sizeOnDisk?: number;
empty?: boolean;
}
export interface IReq_ListDatabases extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_ListDatabases
> {
method: 'listDatabases';
request: {};
response: {
databases: IMongoDatabase[];
};
}
export interface IMongoCollection {
name: string;
count?: number;
}
export interface IReq_ListCollections extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_ListCollections
> {
method: 'listCollections';
request: {
databaseName: string;
};
response: {
collections: IMongoCollection[];
};
}
export interface IReq_CreateCollection extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_CreateCollection
> {
method: 'createCollection';
request: {
databaseName: string;
collectionName: string;
};
response: {
success: boolean;
};
}
export interface IReq_FindDocuments extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_FindDocuments
> {
method: 'findDocuments';
request: {
databaseName: string;
collectionName: string;
filter?: Record<string, unknown>;
projection?: Record<string, unknown>;
sort?: Record<string, number>;
skip?: number;
limit?: number;
};
response: {
documents: Record<string, unknown>[];
total: number;
};
}
export interface IReq_GetDocument extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_GetDocument
> {
method: 'getDocument';
request: {
databaseName: string;
collectionName: string;
documentId: string;
};
response: {
document: Record<string, unknown> | null;
};
}
export interface IReq_InsertDocument extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_InsertDocument
> {
method: 'insertDocument';
request: {
databaseName: string;
collectionName: string;
document: Record<string, unknown>;
};
response: {
insertedId: string;
};
}
export interface IReq_UpdateDocument extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_UpdateDocument
> {
method: 'updateDocument';
request: {
databaseName: string;
collectionName: string;
documentId: string;
update: Record<string, unknown>;
};
response: {
success: boolean;
modifiedCount: number;
};
}
export interface IReq_DeleteDocument extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_DeleteDocument
> {
method: 'deleteDocument';
request: {
databaseName: string;
collectionName: string;
documentId: string;
};
response: {
success: boolean;
deletedCount: number;
};
}
export interface IReq_RunAggregation extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_RunAggregation
> {
method: 'runAggregation';
request: {
databaseName: string;
collectionName: string;
pipeline: Record<string, unknown>[];
};
response: {
results: Record<string, unknown>[];
};
}
export interface IMongoIndex {
name: string;
keys: Record<string, number>;
unique?: boolean;
sparse?: boolean;
}
export interface IReq_ListIndexes extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_ListIndexes
> {
method: 'listIndexes';
request: {
databaseName: string;
collectionName: string;
};
response: {
indexes: IMongoIndex[];
};
}
export interface IReq_CreateIndex extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_CreateIndex
> {
method: 'createIndex';
request: {
databaseName: string;
collectionName: string;
keys: Record<string, number>;
options?: {
unique?: boolean;
sparse?: boolean;
name?: string;
};
};
response: {
indexName: string;
};
}
export interface IReq_DropIndex extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_DropIndex
> {
method: 'dropIndex';
request: {
databaseName: string;
collectionName: string;
indexName: string;
};
response: {
success: boolean;
};
}
export interface ICollectionStats {
count: number;
size: number;
avgObjSize: number;
storageSize: number;
indexCount: number;
}
export interface IReq_GetCollectionStats extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_GetCollectionStats
> {
method: 'getCollectionStats';
request: {
databaseName: string;
collectionName: string;
};
response: {
stats: ICollectionStats;
};
}
export interface IReq_GetServerStatus extends plugins.typedrequestInterfaces.implementsTR<
plugins.typedrequestInterfaces.ITypedRequest,
IReq_GetServerStatus
> {
method: 'getServerStatus';
request: {};
response: {
version: string;
uptime: number;
connections: {
current: number;
available: number;
};
};
}