@aptly-as/types
Version:
Aptly types and enums
53 lines (52 loc) • 1.93 kB
TypeScript
import type { CompleteMultipartUploadOutput } from '@aws-sdk/client-s3';
import { AptlyDocumentAccess, AptlyDocumentType } from '../enums/index.js';
import { AptlyBaseSchema, AptlyDBCrawlerCleaner } from './extends.js';
import { AptlyProductSchema } from './product.js';
import { AptlyOrganizationSchema } from './organization';
export type AptlyDocument = AptlyDocumentSchema<string, string>;
export interface AptlyDocumentSchema<ID, DATE> extends Omit<AptlyBaseSchema<ID, DATE>, 'archived'>, AptlyDBCrawlerCleaner {
mime: string;
access?: AptlyDocumentAccess;
_type: AptlyDocumentType;
data: string;
organization: ID | AptlyOrganizationSchema<ID, DATE> | null;
project: ID | null;
unit: ID | null;
offer: ID | null;
option: ID | null;
product: ID | AptlyProductSchema<ID, DATE> | null;
text?: string;
size: number;
thirdPartyUploader: string | null;
thirdPartyId: string | null;
public_id?: string;
external_url?: string;
uploadSignature?: string;
boligmappaStatus?: AptlyDocumentSchemaBoligmappaStatusSchema<ID>[];
chunks?: (AptlyDocumentSchema<ID, DATE> | ID)[];
s3: AptlyDocumentS3;
previews: AptlyDocumentPreviewSchema<ID, DATE>[];
isPasswordProtected?: boolean;
expires?: DATE | null;
downloadToken?: string;
previewUrl?: string;
created: DATE;
}
export interface AptlyDocumentPreviewSchema<ID, DATE> {
_id: ID;
contentType: string;
name: string;
height: number;
width: number;
size: number;
s3: AptlyDocumentS3;
createdAt: DATE;
}
export type AptlyDocumentS3 = Pick<CompleteMultipartUploadOutput, 'Bucket' | 'Key' | 'Location' | 'ETag' | 'Expiration'>;
export type AptlyDocumentSchemaBoligmappaStatus = AptlyDocumentSchemaBoligmappaStatusSchema<string>;
export interface AptlyDocumentSchemaBoligmappaStatusSchema<ID> {
_id: ID;
unit: ID;
id?: number;
errorCode?: number;
}