Skip to content

Commit c5503ef

Browse files
authored
Ws changes cleanup (#1588)
* create a validator prevening WsId changes * use new change context api to detect and resolve unique constraint conflicts * simplify the CreateWritingSystem API to remove the specific type parameter as there's a property for it in the WritingSystem class * check for existing writing systems before trying to create it via a change
1 parent 6e3248a commit c5503ef

27 files changed

+292
-154
lines changed

backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,10 @@ internal void CompleteExemplars(WritingSystems writingSystems)
146146
}
147147
}
148148

149-
public async Task<WritingSystem> CreateWritingSystem(WritingSystemType type, WritingSystem writingSystem)
149+
public async Task<WritingSystem> CreateWritingSystem(WritingSystem writingSystem)
150150
{
151151
await validators.ValidateAndThrow(writingSystem);
152+
var type = writingSystem.Type;
152153
var exitingWs = type == WritingSystemType.Analysis ? Cache.ServiceLocator.WritingSystems.AnalysisWritingSystems : Cache.ServiceLocator.WritingSystems.VernacularWritingSystems;
153154
if (exitingWs.Any(ws => ws.Id == writingSystem.WsId))
154155
{
@@ -186,6 +187,7 @@ public async Task<WritingSystem> CreateWritingSystem(WritingSystemType type, Wri
186187

187188
public async Task<WritingSystem> UpdateWritingSystem(WritingSystemId id, WritingSystemType type, UpdateObjectInput<WritingSystem> update)
188189
{
190+
await validators.ValidateAndThrow(update);
189191
if (!Cache.ServiceLocator.WritingSystemManager.TryGet(id.Code, out var lcmWritingSystem))
190192
{
191193
throw new InvalidOperationException($"Writing system {id.Code} not found");

backend/FwLite/FwLiteProjectSync.Tests/Fixtures/SyncFixture.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public async Task EnsureDefaultVernacularWritingSystemExistsInCrdt()
102102
if ((await CrdtApi.GetWritingSystems()).Vernacular.Length == 0)
103103
{
104104
var firstVernacularWs = (await FwDataApi.GetWritingSystems()).Vernacular.First();
105-
await CrdtApi.CreateWritingSystem(WritingSystemType.Vernacular, firstVernacularWs);
105+
await CrdtApi.CreateWritingSystem(firstVernacularWs);
106106
}
107107
}
108108
finally

backend/FwLite/FwLiteProjectSync.Tests/Sena3SyncTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private async Task BypassImport(bool wsImported = false)
6868
private async Task WorkaroundMissingWritingSystems()
6969
{
7070
//must have at least one writing system to query for entries
71-
await _crdtApi.CreateWritingSystem(WritingSystemType.Vernacular, (await _fwDataApi.GetWritingSystems()).Vernacular.First());
71+
await _crdtApi.CreateWritingSystem((await _fwDataApi.GetWritingSystems()).Vernacular.First());
7272

7373
}
7474

backend/FwLite/FwLiteProjectSync.Tests/SyncTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,8 @@ public async Task UpdatingAnEntryInEachProjectSyncsAcrossBoth()
415415
{
416416
var crdtApi = _fixture.CrdtApi;
417417
var fwdataApi = _fixture.FwDataApi;
418-
await fwdataApi.CreateWritingSystem(WritingSystemType.Vernacular, new WritingSystem() { Id = Guid.NewGuid(), Type = WritingSystemType.Vernacular, WsId = new WritingSystemId("es"), Name = "Spanish", Abbreviation = "es", Font = "Arial" });
419-
await fwdataApi.CreateWritingSystem(WritingSystemType.Vernacular, new WritingSystem() { Id = Guid.NewGuid(), Type = WritingSystemType.Vernacular, WsId = new WritingSystemId("fr"), Name = "French", Abbreviation = "fr", Font = "Arial" });
418+
await fwdataApi.CreateWritingSystem(new WritingSystem() { Id = Guid.NewGuid(), Type = WritingSystemType.Vernacular, WsId = new WritingSystemId("es"), Name = "Spanish", Abbreviation = "es", Font = "Arial" });
419+
await fwdataApi.CreateWritingSystem(new WritingSystem() { Id = Guid.NewGuid(), Type = WritingSystemType.Vernacular, WsId = new WritingSystemId("fr"), Name = "French", Abbreviation = "fr", Font = "Arial" });
420420
await _syncService.Sync(crdtApi, fwdataApi);
421421

422422
await crdtApi.UpdateEntry(_testEntry.Id, new UpdateObjectInput<Entry>().Set(entry => entry.LexemeForm["es"], "Manzana"));

backend/FwLite/FwLiteProjectSync/DryRunMiniLcmApi.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ public void Dispose()
1818

1919
public record DryRunRecord(string Method, string Description);
2020

21-
public Task<WritingSystem> CreateWritingSystem(WritingSystemType type, WritingSystem writingSystem)
21+
public Task<WritingSystem> CreateWritingSystem(WritingSystem writingSystem)
2222
{
23-
DryRunRecords.Add(new DryRunRecord(nameof(CreateWritingSystem), $"Create writing system {type}"));
23+
DryRunRecords.Add(new DryRunRecord(nameof(CreateWritingSystem), $"Create writing system {writingSystem.Type}"));
2424
return Task.FromResult(writingSystem);
2525
}
2626

backend/FwLite/FwLiteProjectSync/MiniLcmImport.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,13 +103,13 @@ internal async Task ImportWritingSystems(IMiniLcmApi importTo, IMiniLcmApi impor
103103
var writingSystems = await importFrom.GetWritingSystems();
104104
foreach (var ws in writingSystems.Analysis)
105105
{
106-
await importTo.CreateWritingSystem(WritingSystemType.Analysis, ws);
106+
await importTo.CreateWritingSystem(ws);
107107
logger.LogInformation("Imported ws {WsId}", ws.WsId);
108108
}
109109

110110
foreach (var ws in writingSystems.Vernacular)
111111
{
112-
await importTo.CreateWritingSystem(WritingSystemType.Vernacular, ws);
112+
await importTo.CreateWritingSystem(ws);
113113
logger.LogInformation("Imported ws {WsId}", ws.WsId);
114114
}
115115
}

backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public ValueTask<Entry[]> SearchEntries(string query, QueryOptions? options = nu
119119
[JSInvokable]
120120
public Task<WritingSystem> CreateWritingSystem(WritingSystemType type, WritingSystem writingSystem)
121121
{
122-
return _wrappedApi.CreateWritingSystem(type, writingSystem);
122+
return _wrappedApi.CreateWritingSystem(writingSystem);
123123
}
124124

125125
[JSInvokable]

backend/FwLite/FwLiteWeb/Hubs/CrdtMiniLcmApiHub.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ public override IAsyncEnumerable<Entry> SearchEntries(string query, QueryOptions
9797
return base.SearchEntries(query, options);
9898
}
9999

100-
public override async Task<WritingSystem> CreateWritingSystem(WritingSystemType type, WritingSystem writingSystem)
100+
public override async Task<WritingSystem> CreateWritingSystem(WritingSystem writingSystem)
101101
{
102-
var newWritingSystem = await base.CreateWritingSystem(type, writingSystem);
102+
var newWritingSystem = await base.CreateWritingSystem(writingSystem);
103103
TriggerSync();
104104
return newWritingSystem;
105105
}

backend/FwLite/FwLiteWeb/Hubs/MiniLcmApiHubBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ public async Task<WritingSystems> GetWritingSystems()
1313
return await miniLcmApi.GetWritingSystems();
1414
}
1515

16-
public virtual async Task<WritingSystem> CreateWritingSystem(WritingSystemType type, WritingSystem writingSystem)
16+
public virtual async Task<WritingSystem> CreateWritingSystem(WritingSystem writingSystem)
1717
{
18-
var newWritingSystem = await miniLcmApi.CreateWritingSystem(type, writingSystem);
18+
var newWritingSystem = await miniLcmApi.CreateWritingSystem(writingSystem);
1919
return newWritingSystem;
2020
}
2121

backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ private static IEnumerable<ChangeWithDependencies> GetAllChanges()
111111
yield return new ChangeWithDependencies(createSemanticDomainChange);
112112

113113
var writingSystem = new WritingSystem { Id = Guid.NewGuid(), WsId = "de", Name = "test ws", Abbreviation = "tws", Font = "Arial", Type = WritingSystemType.Vernacular };
114-
var createWritingSystemChange = new CreateWritingSystemChange(writingSystem, writingSystem.Type, writingSystem.Id, 0);
114+
var createWritingSystemChange = new CreateWritingSystemChange(writingSystem, writingSystem.Id, 0);
115115
yield return new ChangeWithDependencies(createWritingSystemChange);
116116

117117
var complexFormTypeName = new MultiString { { "en", "test cft" } };

0 commit comments

Comments
 (0)