oralify-backend
Version:
Express Node CRUD backend for Oralify
40 lines (33 loc) • 1.27 kB
text/typescript
import { Request, Response } from "express";
import { supabase } from "../supabase";
const generateUniqueIdentifier = async (fullName: string, speciality: string) => {
let userName
let num = 1;
const nameLowerCase = fullName.toLowerCase()
const words = nameLowerCase.split(" ");
const name = words[0];
const initialLastName = words[1] ? words[1].charAt(0).toUpperCase() : '';
const baseUserName = speciality ? `${name}${initialLastName}${speciality}`: `${name}${initialLastName}`;
userName = baseUserName
while (true) {
const { data } = await supabase
.from('users')
.select('username')
.eq('username', userName);
if (!data || data.length === 0) {
return userName;
}
userName = `${baseUserName}${num}`;
num++;
}
};
export const getUsername = async (req: Request, res: Response): Promise<void> => {
try {
const { fullName, speciality } = req.body;
if (!fullName){ res.status(404).send('Fullname required'); return }
const uniqueIdentifier = await generateUniqueIdentifier(fullName, speciality);
res.status(200).json( uniqueIdentifier );
} catch (err) {
res.status(500).json({ err });
}
}