customer-dashboard-api/src/validator/validator.ts

111 lines
2.8 KiB
TypeScript

import logger from "../logger/logger";
import {
USERNAME_MIN_LENGTH,
USERNAME_MAX_LENGTH,
PASSWORD_MIN_LENGTH,
PASSWORD_MAX_LENGTH,
ACCOUNT_NAME_MIN_LENGTH,
ACCOUNT_NAME_MAX_LENGTH,
USER_ID_LENGTH,
STORE_SERVICE_MIN_LENGTH,
STORE_SERVICE_MAX_LENGTH,
STORE_SERVICE_ACTIVITY_NAME_MAX_LENGTH,
STORE_SERVICE_ACTIVITY_NAME_MIN_LENGTH,
STORE_SERVICE_ACTIVITY_DESCRIPTION_MAX_LENGTH,
STORE_SERVICE_ACTIVITY_DESCRIPTION_MIN_LENGTH,
STORE_SERVICE_ACTIVITY_PRICE_MAX,
STORE_SERVICE_ACTIVITY_PRICE_MIN,
STORE_SERVICE_ACTIVITY_DURATION_MAX,
STORE_SERVICE_ACTIVITY_DURATION_MIN,
} from "../utils/constants";
import User from "../models/user";
// TODO: regex for username
export function isUsernameValid(username: string) {
return (
username.length >= USERNAME_MIN_LENGTH &&
username.length <= USERNAME_MAX_LENGTH
);
}
// TODO: regex for account name
export async function isAccountNameValid(accountName: string) {
if (
accountName.length < ACCOUNT_NAME_MIN_LENGTH ||
accountName.length > ACCOUNT_NAME_MAX_LENGTH
) {
return false;
}
// check if account name is already taken in the database
const existingUser = await User.findOne({
where: {
account_name: accountName,
},
});
if (existingUser) {
return false;
}
return true;
}
// TODO: regex for password
export function isPasswordValid(password: string) {
return (
password.length >= PASSWORD_MIN_LENGTH &&
password.length <= PASSWORD_MAX_LENGTH
);
}
export function isUserIdValid(userId: string) {
return userId.length === USER_ID_LENGTH;
}
export function isStoreServiceNameValid(storeServiceName: string) {
return (
storeServiceName.length >= STORE_SERVICE_MIN_LENGTH &&
storeServiceName.length <= STORE_SERVICE_MAX_LENGTH
);
}
export function isStoreServiceActivityNameValid(
storeServiceActivityName: string
) {
return (
storeServiceActivityName.length >= STORE_SERVICE_ACTIVITY_NAME_MIN_LENGTH &&
storeServiceActivityName.length <= STORE_SERVICE_ACTIVITY_NAME_MAX_LENGTH
);
}
export function isStoreServiceActivityDescriptionValid(
storeServiceActivityDescription: string
) {
return (
storeServiceActivityDescription.length >=
STORE_SERVICE_ACTIVITY_DESCRIPTION_MIN_LENGTH &&
storeServiceActivityDescription.length <=
STORE_SERVICE_ACTIVITY_DESCRIPTION_MAX_LENGTH
);
}
export function isStoreServiceActivityPriceValid(
storeServiceActivityPrice: number
) {
return (
storeServiceActivityPrice >= STORE_SERVICE_ACTIVITY_PRICE_MIN &&
storeServiceActivityPrice <= STORE_SERVICE_ACTIVITY_PRICE_MAX
);
}
export function isStoreServiceActivityDurationValid(
storeServiceActivityDuration: number
) {
return (
storeServiceActivityDuration >= STORE_SERVICE_ACTIVITY_DURATION_MIN &&
storeServiceActivityDuration <= STORE_SERVICE_ACTIVITY_DURATION_MAX
);
}