import { ClientBase } from 'pg';
import { Request, Response } from 'lambda-api';
import { getAuth } from '../../../shared/libs/auth';
import { failure, success } from '../../../shared/libs/response';
import code from '../../../shared/libs/code';
import { validateParameterNumber, validateParameterString } from '../../../shared/libs/validation';
async function getStudent(
db: ClientBase,
tenantUuid: string,
studentId: number
): Promise<any> {
try {
const queryResult = await db.query(`
select student.student_id,
student.student_name,
student.religion_id
from student
where deleted_at is null
and tenant_uuid = $1
and student_id = $2
`, [
tenantUuid,
studentId,
]);
if (queryResult.rowCount === 0) {
return null;
}
return queryResult.rows[0];
} catch (e) {
console.error('[ERROR-QUERY] - func: getStudent', e);
throw Error(code.database_error);
}
}
function validateParameters(req: Request) {
const studentId = validateParameterNumber(req.params.student_id);
const studentName = validateParameterString(req.query.student_name, false);
const religionId = validateParameterNumber(req.query.religion_id, false);
console.log(req.query, req.params, req.body);
if (
!studentId
|| studentName === false
|| religionId === false
) {
throw Error(code.input_invalid);
}
return {
student_id: studentId,
student_name: studentName,
religion_id: religionId,
};
}
export default async function coba(req: Request, res: Response): Promise<any> {
try {
const auth = getAuth(req);
const param = validateParameters(req);
const student = await getStudent(req.namespace.db, auth.tenant_uuid, param.student_id);
success(res, {
status: true,
version: req.version,
message: 'success',
data: {
...student,
test_student_name: param.student_name,
test_religion_id: param.religion_id,
},
meta: null,
});
} catch (e) {
failure(res, e);
}
}