Monorepo for Tangled
tangled.org
1package db
2
3import (
4 "time"
5)
6
7type NixOSToplevelCacheRecord struct {
8 ConfigKey string
9 Toplevel string
10 UpdatedAt time.Time
11}
12
13func (d *DB) GetNixOSToplevelCacheRecord(configKey string) (*NixOSToplevelCacheRecord, error) {
14 var record NixOSToplevelCacheRecord
15 var updatedAtStr string
16 err := d.QueryRow(
17 `select config_key, toplevel, updated_at from nixos_toplevel_cache where config_key = ?`,
18 configKey,
19 ).Scan(&record.ConfigKey, &record.Toplevel, &updatedAtStr)
20 if err != nil {
21 return nil, err
22 }
23 updatedAt, err := time.Parse(time.RFC3339, updatedAtStr)
24 if err != nil {
25 return nil, err
26 }
27 record.UpdatedAt = updatedAt
28 return &record, nil
29}
30
31func (d *DB) SaveNixOSToplevelCacheRecord(configKey, toplevel string) error {
32 _, err := d.Exec(
33 `insert into nixos_toplevel_cache (config_key, toplevel, updated_at)
34 values (?, ?, ?)
35 on conflict(config_key) do update set
36 toplevel = excluded.toplevel,
37 updated_at = excluded.updated_at`,
38 configKey, toplevel, time.Now().UTC().Format(time.RFC3339),
39 )
40 return err
41}