Example #1
0
        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));
        }