this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

handle account evts

dholms 58617b82 2d860468

+78 -19
+25 -11
nexus/models/models.go
··· 3 3 type RepoState string 4 4 5 5 const ( 6 - RepoStatePending RepoState = "pending" 7 - RepoStateResyncing RepoState = "resyncing" 8 - RepoStateActive RepoState = "active" 9 - RepoStateDesynced RepoState = "desynced" 10 - RepoStateError RepoState = "error" 6 + RepoStatePending RepoState = "pending" 7 + RepoStateDesynced RepoState = "desynced" 8 + RepoStateResyncing RepoState = "resyncing" 9 + RepoStateActive RepoState = "active" 10 + RepoStateTakendown RepoState = "takendown" 11 + RepoStateSuspended RepoState = "suspended" 12 + RepoStateDeactivated RepoState = "deactivated" 13 + RepoStateError RepoState = "error" 14 + ) 15 + 16 + type RepoStatus string 17 + 18 + const ( 19 + RepoStatusActive RepoStatus = "active" 20 + RepoStatusTakendown RepoStatus = "takendown" 21 + RepoStatusSuspended RepoStatus = "suspended" 22 + RepoStatusDeactivated RepoStatus = "deactivated" 23 + RepoStatusDeleted RepoStatus = "deleted" 11 24 ) 12 25 13 26 type Repo struct { 14 - Did string `gorm:"primaryKey"` 15 - State RepoState `gorm:"not null;default:'pending';index"` 16 - Handle string `gorm:"type:text"` 17 - Rev string `gorm:"type:text"` 18 - PrevData string `gorm:"type:text"` 19 - ErrorMsg string `gorm:"type:text"` 27 + Did string `gorm:"primaryKey"` 28 + State RepoState `gorm:"not null;default:'pending';index"` 29 + Status RepoStatus `gorm:"not null;default:'active'"` 30 + Handle string `gorm:"type:text"` 31 + Rev string `gorm:"type:text"` 32 + PrevData string `gorm:"type:text"` 33 + ErrorMsg string `gorm:"type:text"` 20 34 } 21 35 22 36 type OutboxBuffer struct {
+1 -2
nexus/nexus.go
··· 100 100 return n.EventProcessor.ProcessIdentity(context.Background(), evt) 101 101 }, 102 102 RepoAccount: func(evt *comatproto.SyncSubscribeRepos_Account) error { 103 - // @TODO 104 - return nil 103 + return n.EventProcessor.ProcessAccount(context.Background(), evt) 105 104 }, 106 105 } 107 106
+51 -4
nexus/processor.go
··· 213 213 return nil 214 214 } 215 215 216 + if err := ep.DB.Model(&models.Repo{}). 217 + Where("did = ?", did). 218 + Update("handle", handleStr).Error; err != nil { 219 + ep.Logger.Error("failed to update handle", "did", did, "handle", handleStr, "error", err) 220 + return err 221 + } 222 + 216 223 userEvt := &UserEvt{ 217 224 Did: did, 218 225 Handle: handleStr, ··· 223 230 return err 224 231 } 225 232 226 - if err := ep.DB.Model(&models.Repo{}). 227 - Where("did = ?", did). 228 - Update("handle", handleStr).Error; err != nil { 229 - ep.Logger.Error("failed to update handle", "did", did, "handle", handleStr, "error", err) 233 + return nil 234 + } 235 + 236 + func (ep *EventProcessor) ProcessAccount(ctx context.Context, evt *comatproto.SyncSubscribeRepos_Account) error { 237 + curr, err := ep.GetRepoState(evt.Did) 238 + if err != nil { 239 + return err 240 + } else if curr == nil { 241 + return nil 242 + } 243 + 244 + // handle delete first 245 + 246 + var updateTo models.RepoStatus 247 + if evt.Active { 248 + updateTo = models.RepoStatusActive 249 + } else if *evt.Status == string(models.RepoStatusDeactivated) || *evt.Status == string(models.RepoStatusTakendown) || *evt.Status == string(models.RepoStatusSuspended) { 250 + updateTo = models.RepoStatus(*evt.Status) 251 + } else { 252 + // NOOP 253 + return nil 254 + } 255 + 256 + if curr.Status == updateTo { 257 + return nil 258 + } 259 + 260 + err = ep.DB.Model(&models.Repo{}). 261 + Where("did = ?", evt.Did). 262 + Update("status", updateTo).Error 263 + if err != nil { 264 + ep.Logger.Error("failed to update repo status", "did", evt.Did, "status", models.RepoStatusActive, "error", err) 265 + return err 266 + } 267 + 268 + err = ep.Outbox.SendUserEvt(&UserEvt{ 269 + Did: curr.Did, 270 + Handle: curr.Handle, 271 + IsActive: evt.Active, 272 + Status: string(updateTo), 273 + }) 274 + 275 + if err != nil { 276 + ep.Logger.Error("failed to send user evt", "did", evt.Did, "error", err) 230 277 return err 231 278 } 232 279
+1 -2
nexus/types.go
··· 44 44 type UserEvt struct { 45 45 Did string `json:"did"` 46 46 Handle string `json:"handle"` 47 - Pds string `json:"pds"` 48 - IsActive string `json:"is_active"` 47 + IsActive bool `json:"is_active"` 49 48 Status string `json:"status"` 50 49 } 51 50