Skip to content

Commit 945d2b8

Browse files
committed
only seed morphtypes when needed, only use a predefined commit id when seeding. Modify CreateMorphTypeChange to handle creating the same morph type multiple times due to migrations.
1 parent 106f8db commit 945d2b8

4 files changed

Lines changed: 14 additions & 5 deletions

File tree

backend/FwLite/LcmCrdt/Changes/CreateMorphTypeChange.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace LcmCrdt.Changes;
1010

11-
public class CreateMorphTypeChange : CreateChange<MorphType>, ISelfNamedType<CreateMorphTypeChange>
11+
public class CreateMorphTypeChange : Change<MorphType>, ISelfNamedType<CreateMorphTypeChange>
1212
{
1313
[SetsRequiredMembers]
1414
public CreateMorphTypeChange(MorphType morphType) : base(morphType.Id)
@@ -58,4 +58,10 @@ public override async ValueTask<MorphType> NewEntity(Commit commit, IChangeConte
5858
DeletedAt = alreadyExists ? commit.DateTime : null
5959
};
6060
}
61+
62+
public override ValueTask ApplyChange(MorphType entity, IChangeContext context)
63+
{
64+
//don't do anything here, CreateMorphTypeChange is used in a migration, and a change to create the same morph type may happen multiple times
65+
return ValueTask.CompletedTask;
66+
}
6167
}

backend/FwLite/LcmCrdt/CrdtProjectsService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ internal static async Task InitProjectDb(LcmCrdtDbContext db, ProjectData data)
242242

243243
internal static async Task SeedSystemData(DataModel dataModel, ProjectData projectData)
244244
{
245-
await PreDefinedData.AddPredefinedMorphTypes(dataModel, projectData);
245+
await PreDefinedData.AddPredefinedMorphTypes(dataModel, projectData, false);
246246
await PreDefinedData.AddPredefinedComplexFormTypes(dataModel, projectData);
247247
await PreDefinedData.AddPredefinedPartsOfSpeech(dataModel, projectData);
248248
await PreDefinedData.AddPredefinedSemanticDomains(dataModel, projectData);

backend/FwLite/LcmCrdt/CurrentProjectService.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,10 @@ async Task Execute()
112112
// Must happen BEFORE FTS regeneration so headwords include morph-type tokens.
113113
var dataModel = services.GetRequiredService<DataModel>();
114114
var projectData = await dbContext.ProjectData.AsNoTracking().FirstAsync();
115-
await PreDefinedData.AddPredefinedMorphTypes(dataModel, projectData);
115+
if (!await dbContext.MorphTypes.AnyAsync())
116+
{
117+
await PreDefinedData.AddPredefinedMorphTypes(dataModel, projectData, true);
118+
}
116119

117120
if (EntrySearchServiceFactory is not null)
118121
{

backend/FwLite/LcmCrdt/Objects/PreDefinedData.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,10 @@ await dataModel.AddChanges(projectData.ClientId,
104104
CustomViewsSeedCommitId(projectData.Id));
105105
}
106106

107-
internal static async Task AddPredefinedMorphTypes(DataModel dataModel, ProjectData projectData)
107+
internal static async Task AddPredefinedMorphTypes(DataModel dataModel, ProjectData projectData, bool isMigration)
108108
{
109109
await dataModel.AddChanges(projectData.ClientId,
110110
[.. CanonicalMorphTypes.All.Values.Select(mt => new CreateMorphTypeChange(mt))],
111-
MorphTypesSeedCommitId(projectData.Id));
111+
isMigration ? Guid.NewGuid() : MorphTypesSeedCommitId(projectData.Id));
112112
}
113113
}

0 commit comments

Comments
 (0)