-
Notifications
You must be signed in to change notification settings - Fork 0
/
validations.js
154 lines (138 loc) · 3.98 KB
/
validations.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
const db = require("./database");
const util = require("util");
const { error } = require("console");
const query = util.promisify(db.query).bind(db);
async function personValidation(email, apellido, nombre, alias) {
if (!email || !apellido || !nombre || !alias) {
throw new Error("faltan datos");
}
const persons = await query("SELECT * FROM persona WHERE email= ?", [email]);
if (persons.length) {
throw new Error("el email ya se encuentra registrado");
}
}
async function validatePersonFound(id) {
const person = await query("SELECT * FROM persona WHERE id=?", [id]);
if (!person.length) {
throw new Error("no se encuentra esa persona");
}
return person[0];
}
async function validatePersonExist(id) {
const person = await query("SELECT * FROM persona WHERE id=?", [id]);
if (!person.length) {
throw new Error("no existe esa persona");
}
return person[0];
}
async function validatePersonHasBook(id) {
const person = await query("SELECT * FROM libro WHERE persona_id=?", [id]);
if (person.length) {
throw new Error("Esa persona tiene libros asociados, no se puede eliminar");
}
return person[0];
}
//---------------------------------------------------------------------
async function bookValidation(nombre, descripcion, categoria_id, persona_id) {
if (!nombre || !categoria_id || !descripcion || !persona_id) {
throw new Error("faltan datos");
}
}
async function validateBookFound(id) {
const book = await query("SELECT * FROM libro WHERE id=?", [id]);
if (!book.length) {
throw new Error("no se encuentra ese libro");
}
return book[0];
}
async function validateBookExist(id) {
const book = await query("SELECT * FROM libro WHERE nombre=?", [id]);
if (book.length) {
throw new Error("Ya existe ese libro");
}
return book[0];
}
async function validateBookLend(id) {
const book = await query(
"SELECT * FROM libro WHERE persona_id IS NOT NULL AND id=?",
[id]
);
if (book.length) {
throw new Error(
"El libro ya se encuentra prestado no se puede prestar hasta que se devuelva."
);
}
return book[0];
}
async function validateBookIsNotLend(id) {
const book = await query(
"SELECT * FROM libro WHERE persona_id IS NULL AND id=?",
[id]
);
if (book.length) {
throw new Error("Ese libro no estaba prestado!");
}
return book[0];
}
async function validateBookLendDelete(id) {
const book = await query(
"SELECT * FROM libro WHERE persona_id is NOT NULL AND id=?",
[id]
);
if (book.length) {
throw new Error("ese libro esta prestado no se puede borrar");
}
return book[0];
}
//---------------------------------------------------------------------
async function categoryValidation(nombre) {
if (!nombre) {
throw new Error("faltan datos");
}
const category = await query("SELECT * FROM categoria WHERE nombre=?", [
nombre,
]);
if (category.length) {
throw new Error("ese nombre de categoria ya existe");
}
return category[0];
}
async function validateCategoryFound(id) {
const category = await query("SELECT * FROM categoria WHERE id=?", [id]);
if (!category.length) {
throw new Error("categoría no encontrada");
}
return category[0];
}
async function validateCategoryExist(id) {
const category = await query("SELECT * FROM categoria WHERE id=?", [id]);
if (!category.length) {
throw new Error("no existe la categoria indicada");
}
return category[0];
}
async function validateCategoryHasBook(id) {
const category = await query("SELECT * FROM libro WHERE categoria_id=?", [
id,
]);
if (category.length) {
throw new Error("categoria con libros asociados, no se puede eliminar");
}
return category[0];
}
module.exports = {
personValidation,
validatePersonExist,
validatePersonFound,
validatePersonHasBook,
bookValidation,
validateBookIsNotLend,
validateBookFound,
validateBookExist,
validateBookLend,
validateBookLendDelete,
categoryValidation,
validateCategoryFound,
validateCategoryExist,
validateCategoryHasBook,
};