Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion app.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,16 @@ var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
// const { default: mongoose } = require('mongoose');


var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var productRouter = require('./routes/product/router');
var categoryRouter = require('./routes/category/router');
var suppliersRouter = require('./routes/suppliers');
var suppliersRouter = require('./routes/supplier/router');
var employeesRouter = require('./routes/employee/router');
var customerRouter = require('./routes/customer/router');

var app = express();

Expand All @@ -22,11 +26,16 @@ app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

// // mongoose.connect('mongodb://localhost:27017/node-32-database');
// mongoose.connect('mongodb://127.0.0.1:27017/node-32-database');

app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/products', productRouter);
app.use('/categories', categoryRouter);
app.use('/suppliers', suppliersRouter);
app.use('/employees', employeesRouter);
app.use('/customers', customerRouter);


// catch 404 and forward to error handler
Expand Down
2 changes: 1 addition & 1 deletion data/suppliers.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"id":1692094186261,"name":"Ron","email":"123@gmail.com","phoneNumber":"0903123213","address":"123 Van Cao"},{"id":1692194763889,"name":"Chi","email":"123gmail.com","phoneNumber":"0903333333","address":"123 Van Cao"}]
[]
29 changes: 24 additions & 5 deletions models/category.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,29 @@
const mongoose = require('mongoose');
const { Schema, model } = mongoose;

const categorySchema = new Schema({
name: { type: String, required: true },
description: String,
});
const categorySchema = new Schema(
{
name: {
type: String,
required: [true,'Tên danh mục không được bỏ trống'],
maxLength: [50,'Tên danh mục không vượt quá 50 kí tự'],
unique:[true, 'Tên danh mục không được trùng nhau']
},
description: {
type: String,
maxLength: [500,'Tên danh mục không vượt quá 500 kí tự']
},
isDeleted: {
type: Boolean,
required: true,
default: false
}
},
{
versionKey: false,
timestamps: true,
}
);

const Category = model('Category', categorySchema);
const Category = model('Categories', categorySchema);
module.exports = Category;
79 changes: 79 additions & 0 deletions models/customer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
const mongoose = require("mongoose");
const { Schema, model } = mongoose;

const customerSchema = new Schema(
{
firstName: {
type: String,
required: [true, "Tên nhân viên không được bỏ trống"],
maxLength: [20, "Tên nhân viên không vượt quá 20 kí tự"],
},

lastName: {
type: String,
required: [true, "Tên nhân viên không được bỏ trống"],
maxLength: [20, "Tên nhân viên không vượt quá 20 kí tự"],
},

email: {
type: String,
validate: {
validator: function (value) {
const emailRegex =
/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
return emailRegex.test(value);
},
message: `{value} không phải là email hợp lệ`,
},
required: [true, "Email không được bỏ trống"],
unique: true,
},

phoneNumber: {
type: String,
validate: {
validator: function (value) {
const phoneRegex = /(84|0[3|5|7|8|9])+([0-9]{8})\b/g;
return phoneRegex.test(value);
},
message: `{VALUE} không phải là số điện thoại hợp lệ`,
},
unique: true,
},

isDeleted: {
type: Boolean,
required: true,
default: false,
},

address: {
type: String,
maxLength: [500, "Địa chỉ không vượt quá 500 kí tự"],
unique: true,
},

password: {
type: String,
validate: {
validator: function (value) {
const passRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/gm
return passRegex.test(value);
},
message: `{VALUE} không phải là mật khẩu hợp lệ`,
},
},

birthday: {
type: String
}
},
{
versionKey: false,
timestamps: true,
}

);

const Customer = model("customers", customerSchema);
module.exports = Customer;
79 changes: 79 additions & 0 deletions models/employee.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
const mongoose = require("mongoose");
const { Schema, model } = mongoose;

const employeeSchema = new Schema(
{
firstName: {
type: String,
required: [true, "Tên nhân viên không được bỏ trống"],
maxLength: [20, "Tên nhân viên không vượt quá 20 kí tự"],
},

lastName: {
type: String,
required: [true, "Tên nhân viên không được bỏ trống"],
maxLength: [20, "Tên nhân viên không vượt quá 20 kí tự"],
},

email: {
type: String,
validate: {
validator: function (value) {
const emailRegex =
/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
return emailRegex.test(value);
},
message: `{value} không phải là email hợp lệ`,
},
required: [true, "Email không được bỏ trống"],
unique: true,
},

phoneNumber: {
type: String,
validate: {
validator: function (value) {
const phoneRegex = /(84|0[3|5|7|8|9])+([0-9]{8})\b/g;
return phoneRegex.test(value);
},
message: `{VALUE} không phải là số điện thoại hợp lệ`,
},
unique: true,
},

isDeleted: {
type: Boolean,
required: true,
default: false,
},

address: {
type: String,
maxLength: [500, "Địa chỉ không vượt quá 500 kí tự"],
unique: true,
},

password: {
type: String,
validate: {
validator: function (value) {
const passRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/gm
return passRegex.test(value);
},
message: `{VALUE} không phải là mật khẩu hợp lệ`,
},
},

birthday: {
type: String
}
},
{
versionKey: false,
timestamps: true,
}

);

const Employee = model("employees", employeeSchema);
module.exports = Employee;
7 changes: 7 additions & 0 deletions models/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const Employee = require('./employee');
const Customer = require('./customer');

module.exports = {
Employee,
Customer
}
62 changes: 55 additions & 7 deletions models/supplier.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,58 @@
const mongoose = require('mongoose');
const mongoose = require("mongoose");
const { Schema, model } = mongoose;

const supplierSchema = new Schema({
name: { type: String, required: true },
description: String,
});
const supplierSchema = new Schema(
{
name: {
type: String,
required: [true, "Tên danh mục không được bỏ trống"],
maxLength: [50, "Tên danh mục không vượt quá 50 kí tự"],
unique: [true, "Tên danh mục không được trùng nhau"],
},

const Category = model('Category', categorySchema);
module.exports = supplier;
email: {
type: String,
validate: {
validator: function (value) {
const emailRegex =
/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
return emailRegex.test(value);
},
message: `{value} không phải là email hợp lệ`,
},
required: [true, "Email không được bỏ trống"],
unique: true,
},

phoneNumber: {
type: Number,
validate: {
validator: function (value) {
const phoneRegex = /(84|0[3|5|7|8|9])+([0-9]{8})\b/g;
return phoneRegex.test(value);
},
message: `{value} không phải là số điện thoại hợp lệ`,
},
unique: true,
},

isDeleted: {
type: Boolean,
required: true,
default: false,
},

address: {
type: String,
maxLength: [500, "Địa chỉ không vượt quá 500 kí tự"],
}
},
{
versionKey: false,
timestamps: true,
}

);

const Supplier = model("Suppliers", supplierSchema);
module.exports = Supplier;
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"express-generator": "^4.16.1",
"http-errors": "~1.6.3",
"jade": "~1.11.0",
"mongodb": "^5.7.0",
Expand Down
Loading