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