//
// SPDX-License-Identifier: AGPL-3.0
-import { ResourceKind, TrashableResource } from "./resource";
+import {
+ ResourceKind,
+ TrashableResource,
+ ResourceWithProperties
+} from "./resource";
-export interface CollectionResource extends TrashableResource {
+export interface CollectionResource extends TrashableResource, ResourceWithProperties {
kind: ResourceKind.COLLECTION;
name: string;
description: string;
- properties: any;
portableDataHash: string;
manifestText: string;
replicationDesired: number;
replicationConfirmed: number;
replicationConfirmedAt: string;
+ storageClassesDesired: string[];
+ storageClassesConfirmed: string[];
+ storageClassesConfirmedAt: string;
+ currentVersionUuid: string;
+ version: number;
+ preserveVersion: boolean;
+ unsignedManifestText?: string;
+ fileCount: number;
+ fileSizeTotal: number;
}
+// We exclude 'manifestText' and 'unsignedManifestText' from the default
+export const defaultCollectionSelectedFields = [
+ 'name',
+ 'description',
+ 'portableDataHash',
+ 'replicationDesired',
+ 'replicationConfirmed',
+ 'replicationConfirmedAt',
+ 'storageClassesDesired',
+ 'storageClassesConfirmed',
+ 'storageClassesConfirmedAt',
+ 'currentVersionUuid',
+ 'version',
+ 'preserveVersion',
+ 'fileCount',
+ 'fileSizeTotal',
+ // ResourceWithProperties field
+ 'properties',
+ // TrashableResource fields
+ 'trashAt',
+ 'deleteAt',
+ 'isTrashed',
+ // Resource fields
+ 'uuid',
+ 'ownerUuid',
+ 'createdAt',
+ 'modifiedByClientUuid',
+ 'modifiedByUserUuid',
+ 'modifiedAt',
+ 'href',
+ 'kind',
+ 'etag',
+];
+
export const getCollectionUrl = (uuid: string) => {
return `/collections/${uuid}`;
};
+
+export enum CollectionType {
+ GENERAL = 'nil',
+ OUTPUT = 'output',
+ LOG = 'log',
+}