RitsuProject / ritsu-v3

📚 Next version of Ritsu totally rewritten in Typescript and Eris.
MIT License
5 stars 3 forks source link

Use Typegoose for entities #25

Closed Lioness100 closed 3 years ago

Lioness100 commented 3 years ago

Converted Mongoose models and schemas to Typegoose classes (also removed now unnecessary files from interfaces folder). The structure of each entities/ file is:

import { prop, getModelForClass, DocumentType } from '@typegoose/typegoose';

// create the class (using `@prop()` decorator for added metadata)
class SomeClass {
 @prop({ foo: 'bar' })
 someProperty: string;
}

// this is a document of the above class
// it's used, for example, as a function parameter:

// function saveDocument(document: SomeClassDocument) {
//    return someClassDocument.save()
// }
export type SomeClassDocument = DocumentType<SomeClass>;

// this is the main model and default export
// used for .findOne(), .updateMany(), etc. (same usage as mongoose models)
export default getModelForClass(SomeClass);

Closes #23