[backend/core] Use upsert when inserting hashtags
This fixes a race condition.
This commit is contained in:
parent
f2d8bda393
commit
4332d23b32
2 changed files with 2 additions and 4 deletions
|
@ -884,8 +884,7 @@ public class NoteService(
|
||||||
var existing = await bgDb.Hashtags.Where(p => tags.Contains(p.Name)).Select(p => p.Name).ToListAsync();
|
var existing = await bgDb.Hashtags.Where(p => tags.Contains(p.Name)).Select(p => p.Name).ToListAsync();
|
||||||
var dbTags = tags.Except(existing)
|
var dbTags = tags.Except(existing)
|
||||||
.Select(p => new Hashtag { Id = IdHelpers.GenerateSlowflakeId(), Name = p });
|
.Select(p => new Hashtag { Id = IdHelpers.GenerateSlowflakeId(), Name = p });
|
||||||
await bgDb.AddRangeAsync(dbTags);
|
await db.UpsertRange(dbTags).On(p => p.Name).NoUpdate().RunAsync();
|
||||||
await bgDb.SaveChangesAsync();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return tags;
|
return tags;
|
||||||
|
|
|
@ -850,8 +850,7 @@ public class UserService(
|
||||||
var existing = await bgDb.Hashtags.Where(p => tags.Contains(p.Name)).Select(p => p.Name).ToListAsync();
|
var existing = await bgDb.Hashtags.Where(p => tags.Contains(p.Name)).Select(p => p.Name).ToListAsync();
|
||||||
var dbTags = tags.Except(existing)
|
var dbTags = tags.Except(existing)
|
||||||
.Select(p => new Hashtag { Id = IdHelpers.GenerateSlowflakeId(), Name = p });
|
.Select(p => new Hashtag { Id = IdHelpers.GenerateSlowflakeId(), Name = p });
|
||||||
await bgDb.AddRangeAsync(dbTags);
|
await db.UpsertRange(dbTags).On(p => p.Name).NoUpdate().RunAsync();
|
||||||
await bgDb.SaveChangesAsync();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return tags;
|
return tags;
|
||||||
|
|
Loading…
Add table
Reference in a new issue