示例#1
0
        private async Task FetchAllResultsAsync(Domain.Synchronization.Synchronization synchronization, NoteMeContext context, CancellationToken cts)
        {
            cts.ThrowIfCancellationRequested();

            var syncDate = synchronization.LastSynchronization;
            var hasMore  = false;
            var allNotes = new List <Note>();

            do
            {
                var filterBy = $@"{nameof(Note.CreatedAt)} > ""{syncDate}""";
                var orderBy  = $"{nameof(Note.CreatedAt)}-desc";
                var query    = new GetNotesQuery()
                               .SetNormalWhere(filterBy)
                               .SetNormalOrderBy(orderBy);

                var notes = await _webService.SendAsync <PaginationDto <NoteDto> >(HttpMethod.Get,
                                                                                   Endpoints.Notes._ + query.ToUri());

                if (!notes.Data.Any() && !allNotes.Any())
                {
                    return;
                }

                hasMore = notes.Data.Count == query.PageSize;

                foreach (var noteDto in notes.Data)
                {
                    var note = await context.Notes.FirstOrDefaultAsync(x => x.Id == noteDto.Id, cts);

                    if (note != null)
                    {
                        note.Content = noteDto.Content;
                        note.Tags    = noteDto.Tags;
                        note.Name    = noteDto.Name;
                    }
                    else
                    {
                        note = _mapper.MapTo <Note>(noteDto);

                        if (note.Status == StatusEnum.Normal)
                        {
                            allNotes.Add(note);
                        }

                        await context.AddRangeAsync(note);
                    }
                }
            } while (hasMore);

            await context.SaveChangesAsync(cts);

            NPublisher.PublishIt(new NewNotesMessage(allNotes));
        }
示例#2
0
        public async Task SeedAsync()
        {
            var users   = _userSeeder.GetDataToSeed();
            var ids     = users.Select(x => x.Id);
            var existed = await _noteMeContext.Users.Where(x => ids.Any(s => s == x.Id)).ToListAsync();

            var toInsert = users.Where(x => !existed.Any(s => s.Id == x.Id));

            await _noteMeContext.AddRangeAsync(toInsert);

            await _noteMeContext.SaveChangesAsync();
        }
示例#3
0
        private async Task FetchAllAttachmentsAsync(Domain.Synchronization.Synchronization synchronization, NoteMeContext context,
                                                    CancellationToken cts)
        {
            cts.ThrowIfCancellationRequested();

            var syncDate = synchronization.LastSynchronization;
            var hasMore  = false;

            do
            {
                var filterBy = $@"{nameof(Attachment.CreatedAt)} > ""{syncDate}""";
                var orderBy  = $"{nameof(Attachment.CreatedAt)}-desc";
                var query    = new GetAttachmentQuery()
                               .SetNormalWhere(filterBy)
                               .SetNormalOrderBy(orderBy);

                var items = await _apiWebService.SendAsync <PaginationDto <AttachmentDto> >(HttpMethod.Get,
                                                                                            Endpoints.Attachments._ + query.ToUri());

                if (!items.Data.Any())
                {
                    return;
                }

                hasMore = items.Data.Count == query.PageSize;

                foreach (var itemDto in items.Data)
                {
                    var item = await context.Attachments.FirstOrDefaultAsync(x => x.Id == itemDto.Id, cts);

                    if (item != null)
                    {
                        continue;
                    }

                    item = _mapper.MapTo <Attachment>(itemDto);
                    item.StatusSynchronization = SynchronizationStatusEnum.Ok;

                    await context.AddRangeAsync(item);
                }
            } while (hasMore);

            await context.SaveChangesAsync(cts);
        }