this repo has no description
at master 2.5 kB view raw
1package db 2 3import ( 4 "database/sql" 5 "fmt" 6 "strings" 7 "time" 8 9 "tangled.org/core/appview/models" 10 "tangled.org/core/orm" 11) 12 13func GetRegistrations(e Execer, filters ...orm.Filter) ([]models.Registration, error) { 14 var registrations []models.Registration 15 16 var conditions []string 17 var args []any 18 for _, filter := range filters { 19 conditions = append(conditions, filter.Condition()) 20 args = append(args, filter.Arg()...) 21 } 22 23 whereClause := "" 24 if conditions != nil { 25 whereClause = " where " + strings.Join(conditions, " and ") 26 } 27 28 query := fmt.Sprintf(` 29 select id, domain, did, created, registered, needs_upgrade 30 from registrations 31 %s 32 order by created 33 `, 34 whereClause, 35 ) 36 37 rows, err := e.Query(query, args...) 38 if err != nil { 39 return nil, err 40 } 41 defer rows.Close() 42 43 for rows.Next() { 44 var createdAt string 45 var registeredAt sql.Null[string] 46 var needsUpgrade int 47 var reg models.Registration 48 49 err = rows.Scan(&reg.Id, &reg.Domain, &reg.ByDid, &createdAt, &registeredAt, &needsUpgrade) 50 if err != nil { 51 return nil, err 52 } 53 54 if t, err := time.Parse(time.RFC3339, createdAt); err == nil { 55 reg.Created = &t 56 } 57 58 if registeredAt.Valid { 59 if t, err := time.Parse(time.RFC3339, registeredAt.V); err == nil { 60 reg.Registered = &t 61 } 62 } 63 64 if needsUpgrade != 0 { 65 reg.NeedsUpgrade = true 66 } 67 68 registrations = append(registrations, reg) 69 } 70 71 return registrations, nil 72} 73 74func MarkRegistered(e Execer, filters ...orm.Filter) error { 75 var conditions []string 76 var args []any 77 for _, filter := range filters { 78 conditions = append(conditions, filter.Condition()) 79 args = append(args, filter.Arg()...) 80 } 81 82 query := "update registrations set registered = strftime('%Y-%m-%dT%H:%M:%SZ', 'now'), needs_upgrade = 0" 83 if len(conditions) > 0 { 84 query += " where " + strings.Join(conditions, " and ") 85 } 86 87 _, err := e.Exec(query, args...) 88 return err 89} 90 91func AddKnot(e Execer, domain, did string) error { 92 _, err := e.Exec(` 93 insert into registrations (domain, did) 94 values (?, ?) 95 `, domain, did) 96 return err 97} 98 99func DeleteKnot(e Execer, filters ...orm.Filter) error { 100 var conditions []string 101 var args []any 102 for _, filter := range filters { 103 conditions = append(conditions, filter.Condition()) 104 args = append(args, filter.Arg()...) 105 } 106 107 whereClause := "" 108 if conditions != nil { 109 whereClause = " where " + strings.Join(conditions, " and ") 110 } 111 112 query := fmt.Sprintf(`delete from registrations %s`, whereClause) 113 114 _, err := e.Exec(query, args...) 115 return err 116}