Live video on the AT Protocol
1package model
2
3import (
4 "errors"
5
6 "gorm.io/gorm"
7)
8
9type Labeler struct {
10 DID string `gorm:"primaryKey;column:did"`
11 Cursor int64 `gorm:"column:cursor"`
12}
13
14func (m *DBModel) GetLabeler(did string) (*Labeler, error) {
15 var labeler Labeler
16 err := m.DB.Where("did = ?", did).First(&labeler).Error
17 if errors.Is(err, gorm.ErrRecordNotFound) {
18 return nil, nil
19 }
20 if err != nil {
21 return nil, err
22 }
23 return &labeler, nil
24}
25
26func (m *DBModel) CreateLabeler(did string) (*Labeler, error) {
27 labeler := &Labeler{
28 DID: did,
29 Cursor: 0,
30 }
31
32 if err := m.DB.Create(labeler).Error; err != nil {
33 return nil, err
34 }
35 return labeler, nil
36}
37
38func (m *DBModel) UpdateLabelerCursor(did string, cursor int64) error {
39 return m.DB.Model(&Labeler{}).Where("did = ?", did).Update("cursor", cursor).Error
40}