mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-06-05 22:09:38 +02:00
impr: Miglioramenti al salvataggio dei campi
This commit is contained in:
@@ -388,10 +388,7 @@ export class RecordsPage extends Page {
|
||||
|
||||
const relations = await this.loadRelations(model, data);
|
||||
|
||||
await Promise.all(
|
||||
data.except(Object.keys(relations))
|
||||
.map((value, key: string) => this.saveModelField(model, relations, key, value as string))
|
||||
);
|
||||
await this.saveFields(model, relations, data);
|
||||
|
||||
// Save relations
|
||||
for (const [relation, relatedModel] of Object.entries(relations)) {
|
||||
@@ -406,14 +403,26 @@ export class RecordsPage extends Page {
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/require-await
|
||||
async saveModelField(
|
||||
async saveFields(
|
||||
model: IModel,
|
||||
relations: Record<string, IModel>,
|
||||
field: string,
|
||||
value: string
|
||||
data: Collection<File | string>
|
||||
) {
|
||||
model[field] = value;
|
||||
return true;
|
||||
for (const [field, value] of Object.entries(data.all())) {
|
||||
if (field.includes(':')) {
|
||||
const [relation, fieldName]: (string | undefined)[] = field.split(':');
|
||||
const relationModel: IModel = relation in relations
|
||||
? relations[relation]
|
||||
: await this.getRelation(model, relation, true) as IModel;
|
||||
|
||||
if (relationModel) {
|
||||
relationModel[fieldName] = value;
|
||||
relations[relation] = relationModel;
|
||||
}
|
||||
} else {
|
||||
model[field] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async loadRelations(model: IModel, data: Collection<File | string>) {
|
||||
@@ -428,22 +437,6 @@ export class RecordsPage extends Page {
|
||||
relations[field] = await this.getRelation(model, field, false, Number(value)) as IModel;
|
||||
}
|
||||
|
||||
const relationsFields = data.except(relationsData.keys()
|
||||
.all())
|
||||
.filter((value: any, field: string) => field.includes(':'));
|
||||
|
||||
for (const [field, value] of Object.entries(relationsFields.all())) {
|
||||
const [relation, fieldName]: (string | undefined)[] = field.split(':');
|
||||
const relationModel: IModel = relation in relations
|
||||
? relations[relation]
|
||||
: await this.getRelation(model, relation, true) as IModel;
|
||||
|
||||
if (relationModel) {
|
||||
relationModel[fieldName] = value;
|
||||
relations[relation] = relationModel;
|
||||
}
|
||||
}
|
||||
|
||||
return relations;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user