wheelshare-old-backend/src/models.ts

51 lines
1.6 KiB
TypeScript

import { model, Schema } from 'mongoose';
const UserSchema: Schema = new Schema({
email: { type: String, required: true },
username: { type: String, required: true },
first_name: { type: String, required: true },
last_name: { type: String, required: true },
});
UserSchema.virtual('fullName').get(function (this) {
return this.firstName + this.lastName;
});
const UserModel = model('User', UserSchema);
const GroupSchema: Schema = new Schema({
id: { type: String, required: true },
member_ids: { type: [String], required: true },
});
const GroupModel = model('Group', GroupSchema);
const CommentSchema: Schema = new Schema({
id: { type: String, required: true },
text: { type: String, required: true },
author_id: { type: String, required: true },
});
const CommentModel = model('Comment', CommentSchema);
const PoolSchema: Schema = new Schema({
id: { type: String, required: true },
title: { type: String, required: true },
description: { type: String, required: true },
participant_ids: { type: [String], required: true },
driver_id: { type: String, required: true },
create_time: { type: String, required: true },
update_time: { type: String, required: true },
comments: { type: [CommentSchema], required: true },
group_id: { type: String, required: true },
status: { type: String, required: true },
capacity: { type: Number, required: true },
direction: { type: String, required: true },
author_id: { type: String, required: true },
type: { type: String, required: true },
});
const PoolModel = model('Pool', PoolSchema);
export { UserModel, GroupModel, CommentModel };