Files
myDrive/backend/models/file.ts
T
2024-07-05 10:15:48 -04:00

93 lines
1.7 KiB
TypeScript

import mongoose, { Document } from "mongoose";
import { Binary, ObjectId } from "mongodb";
const fileSchema = new mongoose.Schema({
length: {
type: Number,
required: true,
},
chunkSize: {
type: Number,
},
uploadDate: {
type: Date,
required: true,
},
filename: {
type: String,
required: true,
},
metadata: {
type: {
owner: {
type: String,
required: true,
},
parent: {
type: String,
required: true,
},
parentList: {
type: String,
required: true,
},
hasThumbnail: {
type: Boolean,
required: true,
},
isVideo: {
type: Boolean,
required: true,
},
thumbnailID: String,
size: {
type: Number,
required: true,
},
IV: {
type: Buffer,
required: true,
},
linkType: String,
link: String,
filePath: String,
s3ID: String,
personalFile: Boolean,
trashed: Boolean,
},
required: true,
},
});
export interface FileMetadateInterface {
owner: string;
parent: string;
parentList: string;
hasThumbnail: boolean;
isVideo: boolean;
thumbnailID?: string;
size: number;
IV: Buffer;
linkType?: "one" | "public";
link?: string;
filePath?: string;
s3ID?: string;
personalFile?: boolean;
trashed?: boolean;
}
export interface FileInterface
extends mongoose.Document<mongoose.Types.ObjectId> {
length: number;
chunkSize: number;
uploadDate: string;
filename: string;
lastErrorObject: { updatedExisting: any };
metadata: FileMetadateInterface;
}
const File = mongoose.model<FileInterface>("fs.files", fileSchema);
export default File;
module.exports = File;