Refactor document and email template schemas to include resource validation and normalization functions
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
This commit adds the `normalizeTemplateResourceName` and `validateTemplateResources` functions to both the document and email template schemas. These functions ensure that resource names are properly formatted and validated, enhancing the integrity of template resource management. The changes improve the overall schema structure and prepare for future enhancements in template handling.
This commit is contained in:
parent
171d3094a2
commit
52162e1ec6
@ -1,12 +1,33 @@
|
||||
import mongoose from 'mongoose';
|
||||
import { generateId } from '../../utils.js';
|
||||
import {
|
||||
normalizeTemplateResourceName,
|
||||
RESOURCE_NAME_PATTERN,
|
||||
validateTemplateResources,
|
||||
} from '../../../templates/templateresources.js';
|
||||
const { Schema } = mongoose;
|
||||
|
||||
const RESOURCE_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
||||
|
||||
function normalizeTemplateResourceName(value) {
|
||||
return String(value ?? '')
|
||||
.trim()
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9]+/g, '-')
|
||||
.replace(/^-+|-+$/g, '');
|
||||
}
|
||||
|
||||
function validateTemplateResources(resources) {
|
||||
const names = new Set();
|
||||
for (const resource of resources || []) {
|
||||
if (
|
||||
!RESOURCE_NAME_PATTERN.test(resource?.name || '') ||
|
||||
resource?.file == null ||
|
||||
resource.file === '' ||
|
||||
names.has(resource.name)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
names.add(resource.name);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
const RENDER_DOCUMENT_TEMPLATE_CALL = /fc\.renderDocumentTemplate\s*\(\s*(['"])([^'"]+)\1/g;
|
||||
|
||||
function extractRenderDocumentTemplateReferences(content) {
|
||||
|
||||
@ -1,12 +1,33 @@
|
||||
import mongoose from 'mongoose';
|
||||
import { generateId } from '../../utils.js';
|
||||
import {
|
||||
normalizeTemplateResourceName,
|
||||
RESOURCE_NAME_PATTERN,
|
||||
validateTemplateResources,
|
||||
} from '../../../templates/templateresources.js';
|
||||
|
||||
const { Schema } = mongoose;
|
||||
const RESOURCE_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
||||
|
||||
function normalizeTemplateResourceName(value) {
|
||||
return String(value ?? '')
|
||||
.trim()
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9]+/g, '-')
|
||||
.replace(/^-+|-+$/g, '');
|
||||
}
|
||||
|
||||
function validateTemplateResources(resources) {
|
||||
const names = new Set();
|
||||
for (const resource of resources || []) {
|
||||
if (
|
||||
!RESOURCE_NAME_PATTERN.test(resource?.name || '') ||
|
||||
resource?.file == null ||
|
||||
resource.file === '' ||
|
||||
names.has(resource.name)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
names.add(resource.name);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
const RENDER_EMAIL_TEMPLATE_CALL = /fc\.renderEmailTemplate\s*\(\s*(['"])([^'"]+)\1/g;
|
||||
|
||||
function extractReferences(content) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user