Fix Simple Mapping not applying during sync - preserve id field
Root cause: The UUID (id) field was being stripped when saving path mapping: - Backend ReplacementRule model was missing id field - Frontend pathMappingToApi() didn't include id in conversion - Backend update_path_mapping endpoint didn't save id Changes: - Add id field to ReplacementRule model in main.py - Include id when saving path mapping rules in update_path_mapping - Include id in frontend pathMappingToApi conversion Co-authored-by: Koha9 <36852125+Koha9@users.noreply.github.com>
This commit is contained in:
+6
-5
@@ -93,6 +93,7 @@ class RegexRule(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class ReplacementRule(BaseModel):
|
class ReplacementRule(BaseModel):
|
||||||
|
id: str = ""
|
||||||
search: str
|
search: str
|
||||||
replace: str = ""
|
replace: str = ""
|
||||||
|
|
||||||
@@ -404,12 +405,12 @@ async def update_regex_rules(payload: RegexRulePayload):
|
|||||||
async def update_path_mapping(payload: PathMappingPayload):
|
async def update_path_mapping(payload: PathMappingPayload):
|
||||||
path_mapping_dict = {
|
path_mapping_dict = {
|
||||||
"mode": payload.mode,
|
"mode": payload.mode,
|
||||||
"simple": [{"search": rule.search, "replace": rule.replace} for rule in payload.simple],
|
"simple": [{"id": rule.id, "search": rule.search, "replace": rule.replace} for rule in payload.simple],
|
||||||
"regex": {
|
"regex": {
|
||||||
"local_pre": [{"search": rule.search, "replace": rule.replace} for rule in payload.regex.local_pre],
|
"local_pre": [{"id": rule.id, "search": rule.search, "replace": rule.replace} for rule in payload.regex.local_pre],
|
||||||
"local_post": [{"search": rule.search, "replace": rule.replace} for rule in payload.regex.local_post],
|
"local_post": [{"id": rule.id, "search": rule.search, "replace": rule.replace} for rule in payload.regex.local_post],
|
||||||
"remote_pre": [{"search": rule.search, "replace": rule.replace} for rule in payload.regex.remote_pre],
|
"remote_pre": [{"id": rule.id, "search": rule.search, "replace": rule.replace} for rule in payload.regex.remote_pre],
|
||||||
"remote_post": [{"search": rule.search, "replace": rule.replace} for rule in payload.regex.remote_post],
|
"remote_post": [{"id": rule.id, "search": rule.search, "replace": rule.replace} for rule in payload.regex.remote_post],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
server_config.set_and_save_config(path_mapping=path_mapping_dict)
|
server_config.set_and_save_config(path_mapping=path_mapping_dict)
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ const mapPathMappingConfig = (data: any): PathMappingConfig => {
|
|||||||
// Helper function to convert PathMappingConfig to API format
|
// Helper function to convert PathMappingConfig to API format
|
||||||
const pathMappingToApi = (config: PathMappingConfig) => {
|
const pathMappingToApi = (config: PathMappingConfig) => {
|
||||||
const rulesToApi = (rules: ReplacementRule[]) =>
|
const rulesToApi = (rules: ReplacementRule[]) =>
|
||||||
rules.map(({ search, replace }) => ({ search, replace }));
|
rules.map(({ id, search, replace }) => ({ id, search, replace }));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
mode: config.mode,
|
mode: config.mode,
|
||||||
|
|||||||
Reference in New Issue
Block a user