all repos

smutok @ d588b2a7136a328edbc24a863ad33a7f93e7f984

yet another tui rss reader (not abandoned, just paused development)

smutok/internal/store/sqlite_reader.go(view raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package store

import (
	"context"
	"database/sql"
	"errors"
)

func (s *Sqlite) GetLastSyncTime(ctx context.Context) (int64, error) {
	var lut int64
	err := s.db.QueryRowContext(ctx, "select last_sync from reader where id = 1 and last_sync is not null").
		Scan(&lut)
	if errors.Is(err, sql.ErrNoRows) {
		return 0, ErrNotFound
	}
	return lut, err
}

func (s *Sqlite) SetLastSyncTime(ctx context.Context, lastSync int64) error {
	_, err := s.db.ExecContext(ctx,
		`insert into reader (id, last_sync) values (1, ?)
		on conflict(id) do update set last_sync = excluded.last_sync`,
		lastSync)
	return err
}

func (s *Sqlite) GetToken(ctx context.Context) (string, error) {
	var tok string
	err := s.db.QueryRowContext(ctx, "select token from reader where id = 1 and token is not null").
		Scan(&tok)
	if errors.Is(err, sql.ErrNoRows) {
		return "", ErrNotFound
	}
	return tok, err
}

func (s *Sqlite) SetToken(ctx context.Context, token string) error {
	_, err := s.db.ExecContext(ctx,
		`insert into reader (id, token) values (1, ?)
		on conflict(id) do update set token = excluded.token`,
		token)
	return err
}

func (s *Sqlite) GetWriteToken(ctx context.Context) (string, error) {
	var tok string
	err := s.db.QueryRowContext(ctx, "select write_token from reader where id = 1 and write_token is not null").
		Scan(&tok)
	if errors.Is(err, sql.ErrNoRows) {
		return "", ErrNotFound
	}
	return tok, err
}

func (s *Sqlite) SetWriteToken(ctx context.Context, token string) error {
	_, err := s.db.ExecContext(ctx,
		`insert into reader (id, write_token) values (1, ?)
		on conflict(id) do update set write_token = excluded.write_token`,
		token)
	return err
}