private async Task BulkInserEntries(int collectionId, IEnumerable <InsertEntry> entries) { using (var conn = new NpgsqlConnection(_cx.Database.GetConnectionString())) { await conn.OpenAsync().ConfigureAwait(false); using var importer = conn.BeginBinaryImport(@" COPY entries ( phone_hash, id_hash, has_name, has_gender, has_living_place, has_coming_place, has_relationship_status, has_workplace, has_email, has_birthdate, collection_id) FROM STDIN (FORMAT binary)"); foreach (var entry in entries) { var phonePrivateHash = _hashService.GeneratePrivateHash(entry.PhoneHash); var idPrivateHash = _hashService.GeneratePrivateHash(entry.IdHash); await importer.StartRowAsync(); await importer.WriteAsync(phonePrivateHash, NpgsqlTypes.NpgsqlDbType.Bytea); await importer.WriteAsync(idPrivateHash, NpgsqlTypes.NpgsqlDbType.Bytea); await importer.WriteAsync(entry.HasName); await importer.WriteAsync(entry.HasGender); await importer.WriteAsync(entry.HasLivingPlace); await importer.WriteAsync(entry.HasComingPlace); await importer.WriteAsync(entry.HasRelationshipStatus); await importer.WriteAsync(entry.HasWorkplace); await importer.WriteAsync(entry.HasEmail); await importer.WriteAsync(entry.HasBirthdate); await importer.WriteAsync(collectionId); } await importer.CompleteAsync(); } }
public SearchResultModel SearchByFacebookId(string hash) { var privateHash = _hashService.GeneratePrivateHash(hash); var entry = _cx.Entries.FirstOrDefault(e => e.IdHash == privateHash); if (entry == null) { return new SearchResultModel { EntryExists = false } } ; return(GetResultModel(entry)); }