diff --git a/.gitignore b/.gitignore index 380dad2ca..8a357d5fb 100644 --- a/.gitignore +++ b/.gitignore @@ -159,6 +159,7 @@ bindings/netstandard/ElectionGuard/*.user lint-results.xml database/ +!src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database node_modules/ diff --git a/src/electionguard-db/mongo-init.js b/src/electionguard-db/mongo-init.js index 148e2d2fb..69eda8bfe 100644 --- a/src/electionguard-db/mongo-init.js +++ b/src/electionguard-db/mongo-init.js @@ -1,3 +1,22 @@ db.createCollection("key_ceremonies"); -db.key_ceremonies.createIndex({ completed_at: 1 }); -db.key_ceremonies.createIndex({ key_ceremony_name: 1 }); +db.createCollection("elections"); +db.createCollection("ballots"); +db.createCollection("tallies"); + +db.key_ceremonies.createIndex({ KeyCeremonyId: 1, DataType: 1 }); +db.key_ceremonies.createIndex({ KeyCeremonyId: 1, DesignatedId: 1, DataType: 1 }); +db.key_ceremonies.createIndex({ KeyCeremonyId: 1, GuardianId: 1, DataType: 1 }); +db.key_ceremonies.createIndex({ State: 1, DataType: 1 }); + +db.elections.createIndex({ ElectionId: 1, DataType: 1 }); +db.elections.createIndex({ Name: 1, DataType: 1 }); + +db.ballots.createIndex({ ElectionId: 1, DataType: 1 }); +db.ballots.createIndex({ UploadId: 1, DataType: 1 }); +db.ballots.createIndex({ BallotCode: 1, DataType: 1 }); +db.ballots.createIndex({ SerialNumber: 1, ElectionId: 1, DataType: 1 }); + +db.tallies.createIndex({ Name: 1, DataType: 1 }); +db.tallies.createIndex({ ElectionId: 1, DataType: 1 }); +db.tallies.createIndex({ TallyId: 1, DataType: 1 }); +db.tallies.createIndex({ State: 1, DataType: 1 }); diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/BallotService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/BallotService.cs index 35a974532..518918444 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/BallotService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/BallotService.cs @@ -50,16 +50,12 @@ public async Task BallotExists(string ballotCode) } /// - /// Check to see if the ballot has already been included + /// Get a ballot based on its ballot code /// /// ballotcode to find - public async Task GetByBallotCodeAsync(string ballotCode) + public async Task GetByBallotCodeAsync(string ballotCode) { - var filterBuilder = Builders.Filter; - var filter = filterBuilder.And(filterBuilder.Eq(Constants.BallotCode, ballotCode)); - - var ballotCount = await CountByFilterAsync(filter); - return ballotCount > 0; + return await GetByFieldAsync(Constants.BallotCode, ballotCode); } /// @@ -73,5 +69,4 @@ public async Task DeleteByBallotCodeAsync(string ballotCode) await MarkAsDeletedAsync(filter); } - } diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/BallotUploadService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/BallotUploadService.cs index ed0856041..b8bf59187 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/BallotUploadService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/BallotUploadService.cs @@ -35,5 +35,4 @@ public async Task DriveUsed(long serialNumber, string electionId) var uploadCount = await CountByFilterAsync(filter); return uploadCount > 0; } - } diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/CiphertextTallyService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/CiphertextTallyService.cs index 8a3295c7e..bd175ee69 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/CiphertextTallyService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/CiphertextTallyService.cs @@ -1,5 +1,4 @@ using ElectionGuard.UI.Lib.Models; -using MongoDB.Driver; namespace ElectionGuard.UI.Lib.Services; @@ -26,5 +25,4 @@ public class CiphertextTallyService : BaseDatabaseService { return await GetByFieldAsync(Constants.TallyId, tallyId); } - } diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/ConstantsService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/ConstantsService.cs index 6bd02c1e1..e0b018843 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/ConstantsService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/ConstantsService.cs @@ -25,5 +25,4 @@ public class ConstantsService : BaseDatabaseService { return await GetByFieldAsync(Constants.ElectionId, electionId); } - } diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/ContextService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/ContextService.cs index 5be86ec19..1c8bebf9d 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/ContextService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/ContextService.cs @@ -25,5 +25,4 @@ public class ContextService : BaseDatabaseService { return await GetByFieldAsync(Constants.ElectionId, electionId); } - } diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/DbService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/DbService.cs index 9da721c57..9711ef998 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/DbService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/DbService.cs @@ -147,10 +147,9 @@ public static bool Ping() } var server = client.Cluster.Description.Servers.FirstOrDefault(); - return ( + return server is not null && server.HeartbeatException is null && - server.State == ServerState.Connected - ); + server.State == ServerState.Connected; } } diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/GuardianBackupService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/GuardianBackupService.cs index 747bd5f57..0307ab667 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/GuardianBackupService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/GuardianBackupService.cs @@ -66,5 +66,4 @@ public async Task CountAsync(string keyCeremonyId, string guardianId) return await CountByFilterAsync(filter); } - } diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/GuardianPublicKeyService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/GuardianPublicKeyService.cs index 5df14b788..ab6f18b2a 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/GuardianPublicKeyService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/GuardianPublicKeyService.cs @@ -71,6 +71,4 @@ public async Task CountAsync(string keyCeremonyId) var list = await GetAllByFilterAsync(filter); return list.FirstOrDefault(); } - - } diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/LagrangeCoefficientsService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/LagrangeCoefficientsService.cs index fd646b80d..1bf1dcab0 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/LagrangeCoefficientsService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/LagrangeCoefficientsService.cs @@ -1,5 +1,4 @@ using ElectionGuard.UI.Lib.Models; -using MongoDB.Driver; namespace ElectionGuard.UI.Lib.Services; diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/PlaintextSpoiledBallotService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/PlaintextSpoiledBallotService.cs index 4734dbabf..ef7bbe759 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/PlaintextSpoiledBallotService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/PlaintextSpoiledBallotService.cs @@ -1,5 +1,4 @@ using ElectionGuard.UI.Lib.Models; -using MongoDB.Driver; namespace ElectionGuard.UI.Lib.Services; diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/PlaintextTallyService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/PlaintextTallyService.cs index 1a738cc9b..562740694 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/PlaintextTallyService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/PlaintextTallyService.cs @@ -1,5 +1,4 @@ using ElectionGuard.UI.Lib.Models; -using MongoDB.Driver; namespace ElectionGuard.UI.Lib.Services; diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/TallyService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/TallyService.cs index 3eea95d35..aa9741617 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/TallyService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/TallyService.cs @@ -58,6 +58,4 @@ virtual public async Task UpdateCompleteAsync(string tallyId) await UpdateAsync(filter, update); } - - } diff --git a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/VerificationService.cs b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/VerificationService.cs index 9b4dd1f03..85cc4573e 100644 --- a/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/VerificationService.cs +++ b/src/electionguard-ui/ElectionGuard.UI.Lib/Services/Database/VerificationService.cs @@ -49,6 +49,4 @@ public async Task CountAsync(string keyCeremonyId) return await CountByFilterAsync(filter); } - - }