GetState loads arbitrary future app state from JSON.
(ctx context.Context, key string, value any)
| 225 | |
| 226 | // GetState loads arbitrary future app state from JSON. |
| 227 | func (s Store) GetState(ctx context.Context, key string, value any) (bool, error) { |
| 228 | if err := s.Init(ctx); err != nil { |
| 229 | return false, err |
| 230 | } |
| 231 | db, err := s.open() |
| 232 | if err != nil { |
| 233 | return false, err |
| 234 | } |
| 235 | defer db.Close() |
| 236 | var raw string |
| 237 | err = db.QueryRowContext(ctx, `SELECT value_json FROM app_state WHERE key = ?`, key).Scan(&raw) |
| 238 | if err == sql.ErrNoRows { |
| 239 | return false, nil |
| 240 | } |
| 241 | if err != nil { |
| 242 | return false, fmt.Errorf("appstate: get state: %w", err) |
| 243 | } |
| 244 | if err := json.Unmarshal([]byte(raw), value); err != nil { |
| 245 | return false, fmt.Errorf("appstate: parse state: %w", err) |
| 246 | } |
| 247 | return true, nil |
| 248 | } |
| 249 | |
| 250 | func (s Store) upsertProvider(ctx context.Context, name string, endpoint providers.Endpoint) error { |
| 251 | if err := s.Init(ctx); err != nil { |