MCPcopy Index your code
hub / github.com/dnote/dnote / newFragment

Method newFragment

pkg/server/controllers/sync.go:133–212  ·  view source on GitHub ↗
(userID, userMaxUSN, afterUSN, limit int)

Source from the content-addressed store, hash-verified

131}
132
133func (s *Sync) newFragment(userID, userMaxUSN, afterUSN, limit int) (SyncFragment, error) {
134 var notes []database.Note
135 if err := s.app.DB.Where("user_id = ? AND usn > ? AND usn <= ?", userID, afterUSN, userMaxUSN).Order("usn ASC").Limit(limit).Find(&notes).Error; err != nil {
136 return SyncFragment{}, nil
137 }
138 var books []database.Book
139 if err := s.app.DB.Where("user_id = ? AND usn > ? AND usn <= ?", userID, afterUSN, userMaxUSN).Order("usn ASC").Limit(limit).Find(&books).Error; err != nil {
140 return SyncFragment{}, nil
141 }
142
143 var items []usnItem
144 for _, note := range notes {
145 i := usnItem{
146 usn: note.USN,
147 val: note,
148 }
149 items = append(items, i)
150 }
151 for _, book := range books {
152 i := usnItem{
153 usn: book.USN,
154 val: book,
155 }
156 items = append(items, i)
157 }
158
159 // order by usn in ascending order
160 sort.Slice(items, func(i, j int) bool {
161 return items[i].usn < items[j].usn
162 })
163
164 fragNotes := []SyncFragNote{}
165 fragBooks := []SyncFragBook{}
166 fragExpungedNotes := []string{}
167 fragExpungedBooks := []string{}
168
169 fragMaxUSN := 0
170 for i := 0; i < limit; i++ {
171 if i > len(items)-1 {
172 break
173 }
174
175 item := items[i]
176
177 fragMaxUSN = item.usn
178
179 switch v := item.val.(type) {
180 case database.Note:
181 note := item.val.(database.Note)
182
183 if note.Deleted {
184 fragExpungedNotes = append(fragExpungedNotes, note.UUID)
185 } else {
186 fragNotes = append(fragNotes, NewFragNote(note))
187 }
188 case database.Book:
189 book := item.val.(database.Book)
190

Callers 1

GetSyncFragmentMethod · 0.95

Calls 4

NewFragNoteFunction · 0.85
NewFragBookFunction · 0.85
LimitMethod · 0.80
NowMethod · 0.65

Tested by

no test coverage detected