public int Execute(ICommandOption opt) { var option = (CommandOption)opt; using var repository = new LiteDbKeySwitchRepository(option.DatabasePath); var translator = new JsonModelListToKeySwitchList(); var presenter = new IImportingTextPresenter.Console(); var interactor = new ImportingJsonInteractor(repository, translator, presenter); var input = new ImportingTextRequest(File.ReadAllText(option.InputPath)); _ = interactor.Execute(input); return(0); }
public ImportingTextResponse Execute(ImportingTextRequest request) { var keySwitches = Translator.Translate(request.JsonText); var insertedCount = 0; var updatedCount = 0; foreach (var i in keySwitches) { var r = Repository.Save(i); updatedCount += r.Updated; insertedCount += r.Inserted; } Presenter.Present($"{insertedCount} record(s) inserted, {updatedCount} record(s) updated"); return(new ImportingTextResponse(updatedCount)); }
public void ImportTest() { var jsonText = "[{\"id\":\"419db555-cc1d-405c-8b28-281ded630a45\",\"author\":\"Author\",\"description\":\"Description\",\"created\":\"2020-09-15T16:21:11.354Z\",\"last_updated\":\"2020-09-15T16:21:11.354Z\",\"developer_name\":\"DeveloperName\",\"product_name\":\"ProductName\",\"instrument_name\":\"E.Guitar\",\"articulation\":[{\"articulation_name\":\"Power Chord\",\"articulation_type\":1,\"articulation_group\":0,\"articulation_color\":0,\"midi_message\":{\"note_on\":[],\"control_change\":[],\"program_change\":[]}}]}]"; var dbRepository = new LiteDbKeySwitchRepository(new MemoryStream()); var inputData = new ImportingTextRequest(jsonText); var translator = new JsonModelListToKeySwitchList(); var interactor = new ImportingJsonInteractor( dbRepository, translator, new IImportingTextPresenter.Console() ); interactor.Execute(inputData); var entities = dbRepository.Find(new DeveloperName("DeveloperName")); var cmp = translator.Translate(inputData.JsonText); var keySwitches = entities.ToList(); var cmpList = cmp.ToList(); Assert.AreEqual(keySwitches.Count(), cmpList.Count()); Assert.AreEqual(keySwitches.First(), cmpList.First()); }