(ctx context.Context, file *ent.File)
| 257 | } |
| 258 | |
| 259 | func (f *fileClient) Update(ctx context.Context, file *ent.File) (*ent.File, error) { |
| 260 | q := f.client.File.UpdateOne(file). |
| 261 | SetName(file.Name). |
| 262 | SetStoragePoliciesID(file.StoragePolicyFiles) |
| 263 | |
| 264 | existingMetadata, err := f.client.Metadata.Query().Where(metadata.FileID(file.ID)).All(ctx) |
| 265 | if err != nil { |
| 266 | return nil, err |
| 267 | } |
| 268 | |
| 269 | metadataIDs := lo.Map(file.Edges.Metadata, func(item *ent.Metadata, index int) int { |
| 270 | return item.ID |
| 271 | }) |
| 272 | |
| 273 | existingMetadataIds := lo.Map(existingMetadata, func(item *ent.Metadata, index int) int { |
| 274 | return item.ID |
| 275 | }) |
| 276 | |
| 277 | metadataToDelete := lo.Without(existingMetadataIds, metadataIDs...) |
| 278 | |
| 279 | // process metadata diff, delete metadata not in file.Edges.Metadata |
| 280 | _, err = f.client.Metadata.Delete().Where(metadata.FileID(file.ID), metadata.IDIn(metadataToDelete...)).Exec(schema.SkipSoftDelete(ctx)) |
| 281 | if err != nil { |
| 282 | return nil, err |
| 283 | } |
| 284 | |
| 285 | // Update presented metadata |
| 286 | for _, metadata := range file.Edges.Metadata { |
| 287 | f.client.Metadata.UpdateOne(metadata). |
| 288 | SetName(metadata.Name). |
| 289 | SetValue(metadata.Value). |
| 290 | SetIsPublic(metadata.IsPublic). |
| 291 | Save(ctx) |
| 292 | } |
| 293 | |
| 294 | // process direct link diff, delete direct link not in file.Edges.DirectLinks |
| 295 | _, err = f.client.DirectLink.Delete().Where(directlink.FileID(file.ID), directlink.IDNotIn(lo.Map(file.Edges.DirectLinks, func(item *ent.DirectLink, index int) int { |
| 296 | return item.ID |
| 297 | })...)).Exec(ctx) |
| 298 | if err != nil { |
| 299 | return nil, err |
| 300 | } |
| 301 | |
| 302 | return q.Save(ctx) |
| 303 | } |
| 304 | |
| 305 | func (f *fileClient) UpdateProps(ctx context.Context, file *ent.File, props *types.FileProps) (*ent.File, error) { |
| 306 | file, err := f.client.File.UpdateOne(file). |
nothing calls this directly
no test coverage detected