88 lines
1.6 KiB
JavaScript
88 lines
1.6 KiB
JavaScript
const crypto = require("node:crypto");
|
|
const DB = require("./connection");
|
|
|
|
|
|
exports.createStudent = createStudent;
|
|
exports.getStudents = getStudents;
|
|
exports.countStudents = countStudents;
|
|
exports.updateStudent = updateStudent;
|
|
|
|
async function createStudent(
|
|
owner_id,
|
|
name,
|
|
surname,
|
|
studentno,
|
|
email,
|
|
gender,
|
|
birthdate,
|
|
description
|
|
)
|
|
{
|
|
const [id] = await DB.table("students")
|
|
.insert({
|
|
owner_id,
|
|
name,
|
|
surname,
|
|
studentno,
|
|
email,
|
|
gender,
|
|
birthdate,
|
|
description
|
|
})
|
|
.returning("id");
|
|
return id;
|
|
}
|
|
async function updateStudent(
|
|
id,
|
|
owner_id,
|
|
name,
|
|
surname,
|
|
studentno,
|
|
email,
|
|
gender,
|
|
birthdate,
|
|
description
|
|
)
|
|
{
|
|
await DB.table("students")
|
|
.where("id",id)
|
|
.where("owner_id", owner_id)
|
|
.update({
|
|
name,
|
|
surname,
|
|
studentno,
|
|
email,
|
|
gender,
|
|
birthdate,
|
|
description
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
async function getStudents(
|
|
owner_id,
|
|
offset,
|
|
limit,
|
|
searchTerm
|
|
)
|
|
{
|
|
return await DB.table("students")
|
|
.where("owner_id",owner_id)
|
|
.whereNull("deleted_at")
|
|
.where("name","like",`%${searchTerm ?? ""}%`)
|
|
.limit(limit)
|
|
.offset(offset);
|
|
}
|
|
async function countStudents(owner_id, searchTerm)
|
|
{
|
|
return (
|
|
await DB.table("students")
|
|
.where("owner_id",owner_id)
|
|
.whereNull("deleted_at")
|
|
.where("name","like",`%${searchTerm ?? ""}%`)
|
|
.count("id as total")
|
|
.first()
|
|
).total;
|
|
} |