Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Date format consideration #467

Merged
merged 1 commit into from
Feb 2, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 16 additions & 20 deletions apps/api/src/app/review/usecases/do-review/base-review.usecase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ export class BaseReview {
Array.isArray(formattedColumns[column.key].dateFormats) &&
formattedColumns[column.key].dateFormats.length > 0
)
dateFormats[column.key] = formattedColumns[column.key].dateFormats;
dateFormats[column.key] = formattedColumns[column.key].dateFormats.map((format) => format.toUpperCase());
else dateFormats[column.key] = Defaults.DATE_FORMATS;
}
});
Expand Down Expand Up @@ -154,66 +154,62 @@ export class BaseReview {
return errors.reduce((obj, error) => {
[, field] = error.instancePath.split('/');
field = field.replace(/~1/g, '/');
obj[field] = this.getMessage(error, field || error.schema[0], dateFormats);
obj[field] = this.getMessage(error, field || error.schema[0], error.data, dateFormats);

return obj;
}, {});
}

private getMessage(error: ErrorObject, field: string, dateFormats: Record<string, string[]>): string {
private getMessage(error: ErrorObject, field: string, data: unknown, dateFormats: Record<string, string[]>): string {
let message = '';
switch (true) {
// empty string case
case error.keyword === 'emptyCheck':
message = ` must not be empty`;
case error.keyword === 'required':
message = `This field is required`;
break;
// customDateChecker
case error.keyword === 'customDateChecker':
message = ` must match format from [${dateFormats[field].toString()}]`;
message = `${String(data)} must match date format from [${dateFormats[field].toString()}]`;
break;
// uniqueCheck
case error.keyword === 'uniqueCheck':
message = ` must be unique`;
case error.keyword === 'uniqueItemProperties':
message = `${String(data)} already exist in column, it must be unique`;
break;
// custom date format
case error.keyword === 'format' && error.params.format === 'custom-date-time':
message = ` must be a valid date`;
message = `${String(data)} is not a valid date`;
break;
// common cases
case error.keyword === 'type':
if (error.params.type === 'integer') {
message = ` must be a number`;
message = `${String(data)} must be a number`;
} else if (Array.isArray(error.params.type) && error.params.type.toString() === 'integer,null')
message = ` must be a number or empty`;
message = `${String(data)} must be a number or empty`;
else message = ' ' + error.message;
break;
case error.keyword === 'enum':
message = ` must be from [${error.params.allowedValues}]`;
message = `${String(data)} must be from list [${error.params.allowedValues}]`;
break;
case error.keyword === 'regexp':
message = ` must match the pattern ${new RegExp(
message = `${String(data)} must match the pattern ${new RegExp(
error.parentSchema?.regexp?.pattern,
error.parentSchema?.regexp?.flags || ''
).toString()}`;
break;
case error.keyword === 'pattern':
message = ` must match the pattern ${error.params.pattern}`;
message = `${String(data)} must match the pattern of ${error.params.pattern}`;
break;
case error.keyword === 'format':
message = ` must be a valid ${error.params.format}`;
break;
case error.keyword === 'required':
message = ` is required`;
break;
case error.keyword === 'uniqueItemProperties':
message = ` must be unique`;
message = `${String(data)} must be a valid ${error.params.format}`;
break;
default:
message = ` contains invalid data`;
break;
}

return '`' + field + '`' + message;
return message;
}

private async executeBatchInSandbox(batchItem: IBatchItem, sandboxManager: SManager, onBatchInitialize: string) {
Expand Down
Loading