fix(storage): rename S3 configuration and change stream interfaces to storage-oriented types
This commit is contained in:
@@ -1,13 +1,6 @@
|
||||
import * as plugins from '../plugins.js';
|
||||
|
||||
// Import interfaces from shared types
|
||||
// Note: In bundled form these are inlined
|
||||
export interface IS3Object {
|
||||
key: string;
|
||||
size?: number;
|
||||
lastModified?: string;
|
||||
isPrefix?: boolean;
|
||||
}
|
||||
import type { IStorageObject } from '@design.estate/dees-catalog';
|
||||
export type { IStorageObject };
|
||||
|
||||
export interface IMongoDatabase {
|
||||
name: string;
|
||||
@@ -100,7 +93,7 @@ export class ApiService {
|
||||
bucketName: string,
|
||||
prefix?: string,
|
||||
delimiter?: string
|
||||
): Promise<{ objects: IS3Object[]; prefixes: string[] }> {
|
||||
): Promise<{ objects: IStorageObject[]; prefixes: string[] }> {
|
||||
return this.request('listObjects', { bucketName, prefix, delimiter });
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import * as plugins from '../plugins.js';
|
||||
import type { IStorageChangeEvent } from '@design.estate/dees-catalog';
|
||||
export type { IStorageChangeEvent };
|
||||
|
||||
/**
|
||||
* MongoDB change event
|
||||
@@ -16,25 +18,13 @@ export interface IMongoChangeEvent {
|
||||
timestamp: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* S3 change event
|
||||
*/
|
||||
export interface IS3ChangeEvent {
|
||||
type: 'add' | 'modify' | 'delete';
|
||||
key: string;
|
||||
size?: number;
|
||||
etag?: string;
|
||||
lastModified?: Date;
|
||||
bucket: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Combined activity event
|
||||
*/
|
||||
export interface IActivityEvent {
|
||||
id: string;
|
||||
source: 'mongodb' | 's3';
|
||||
event: IMongoChangeEvent | IS3ChangeEvent;
|
||||
source: 'mongodb' | 'storage';
|
||||
event: IMongoChangeEvent | IStorageChangeEvent;
|
||||
timestamp: string;
|
||||
}
|
||||
|
||||
@@ -42,7 +32,7 @@ export interface IActivityEvent {
|
||||
* Subscription info tracked by the service
|
||||
*/
|
||||
interface ISubscription {
|
||||
type: 'mongo' | 's3' | 'activity';
|
||||
type: 'mongo' | 'storage' | 'activity';
|
||||
key: string; // "db/collection" or "bucket/prefix" or "activity"
|
||||
subscriptionId: string;
|
||||
}
|
||||
@@ -69,7 +59,7 @@ export class ChangeStreamService {
|
||||
|
||||
// RxJS Subjects for UI components
|
||||
public readonly mongoChanges$ = new plugins.smartrx.rxjs.Subject<IMongoChangeEvent>();
|
||||
public readonly s3Changes$ = new plugins.smartrx.rxjs.Subject<IS3ChangeEvent>();
|
||||
public readonly storageChanges$ = new plugins.smartrx.rxjs.Subject<IStorageChangeEvent>();
|
||||
public readonly activityEvents$ = new plugins.smartrx.rxjs.Subject<IActivityEvent>();
|
||||
public readonly connectionStatus$ = new plugins.smartrx.rxjs.ReplaySubject<'connected' | 'disconnected' | 'connecting'>(1);
|
||||
|
||||
@@ -193,8 +183,8 @@ export class ChangeStreamService {
|
||||
router.addTypedHandler(
|
||||
new plugins.typedrequest.TypedHandler<any>(
|
||||
'pushS3Change',
|
||||
async (data: { event: IS3ChangeEvent }) => {
|
||||
this.s3Changes$.next(data.event);
|
||||
async (data: { event: IStorageChangeEvent }) => {
|
||||
this.storageChanges$.next(data.event);
|
||||
return { received: true };
|
||||
}
|
||||
)
|
||||
@@ -540,8 +530,8 @@ export class ChangeStreamService {
|
||||
/**
|
||||
* Get S3 changes as an Observable
|
||||
*/
|
||||
public getS3Changes(): plugins.smartrx.rxjs.Observable<IS3ChangeEvent> {
|
||||
return this.s3Changes$.asObservable();
|
||||
public getStorageChanges(): plugins.smartrx.rxjs.Observable<IStorageChangeEvent> {
|
||||
return this.storageChanges$.asObservable();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -565,8 +555,8 @@ export class ChangeStreamService {
|
||||
/**
|
||||
* Get filtered S3 changes for a specific bucket/prefix
|
||||
*/
|
||||
public getBucketChanges(bucket: string, prefix?: string): plugins.smartrx.rxjs.Observable<IS3ChangeEvent> {
|
||||
return this.s3Changes$.pipe(
|
||||
public getBucketChanges(bucket: string, prefix?: string): plugins.smartrx.rxjs.Observable<IStorageChangeEvent> {
|
||||
return this.storageChanges$.pipe(
|
||||
plugins.smartrx.rxjs.ops.filter((event) => {
|
||||
if (event.bucket !== bucket) return false;
|
||||
if (prefix && !event.key.startsWith(prefix)) return false;
|
||||
|
||||
Reference in New Issue
Block a user