43 lines
		
	
	
		
			857 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			857 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package grpc
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"git.solsynth.dev/hypernet/nexus/pkg/nex"
 | |
| 	"strconv"
 | |
| 
 | |
| 	"git.solsynth.dev/hypernet/nexus/pkg/proto"
 | |
| 	"git.solsynth.dev/hypernet/reader/pkg/internal/database"
 | |
| )
 | |
| 
 | |
| func (v *Server) BroadcastEvent(ctx context.Context, in *proto.EventInfo) (*proto.EventResponse, error) {
 | |
| 	switch in.GetEvent() {
 | |
| 	case "deletion":
 | |
| 		data := nex.DecodeMap(in.GetData())
 | |
| 		resType, ok := data["type"].(string)
 | |
| 		if !ok {
 | |
| 			break
 | |
| 		}
 | |
| 		switch resType {
 | |
| 		case "account":
 | |
| 			id, ok := data["id"].(string)
 | |
| 			if !ok {
 | |
| 				break
 | |
| 			}
 | |
| 			numericId, err := strconv.Atoi(id)
 | |
| 			if err != nil {
 | |
| 				break
 | |
| 			}
 | |
| 			tx := database.C.Begin()
 | |
| 			for _, model := range database.AutoMaintainRange {
 | |
| 				switch model.(type) {
 | |
| 				default:
 | |
| 					tx.Delete(model, "account_id = ?", numericId)
 | |
| 				}
 | |
| 			}
 | |
| 			tx.Commit()
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return &proto.EventResponse{}, nil
 | |
| }
 |