Essential backend functionality, including logins.

This commit is contained in:
2019-08-21 12:52:12 +02:00
parent d2168ab4a0
commit 99f2c5e7d8
14 changed files with 3965 additions and 1 deletions

28
api/models/bookModel.js Normal file
View File

@@ -0,0 +1,28 @@
'use strict';
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const BookSchema = new Schema({
title: {
type: String,
required: 'Book title missing'
},
publication_date: {
type: Date,
default: Date(0)
},
quantity: {
type: Number,
default: 1
},
amount_loaned: {
type: Number,
default: 0
},
isbn13: {
type: String,
required: 'Book ISBN-13 missing'
}
});
module.exports = mongoose.model('Book', BookSchema);

70
api/models/userModel.js Normal file
View File

@@ -0,0 +1,70 @@
'use strict';
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const permission_set = {
add_books: {
type: Boolean,
default: true
},
update_books: {
type: Boolean,
default: false
},
borrow_books: {
type: Boolean,
default: true
},
add_users: {
type: Boolean,
default: false
},
delete_users: {
type: Boolean,
default: false
},
delete_books: {
type: Boolean,
default: false
},
update_users: {
type: Boolean,
default: false
},
change_permissions: {
type: Boolean,
default: false
}
};
const UserSchema = new Schema({
username: {
type: String,
required: 'Username missing'
},
password: {
type: String,
required: 'Password missing'
},
email: String,
student_card: String,
borrowing: [{
bookId: Schema.Types.ObjectId,
date: Date
}],
permissions: permission_set
});
UserSchema.set('toJSON', {
transform: function(doc, ret, options) {
const json = {
username: ret.username,
borrowing: ret.borrowing,
permissions: ret.permissions,
_id: ret._id
};
return json;
}
});
module.exports = mongoose.model('User', UserSchema);