| 371 | } |
| 372 | |
| 373 | func scanItems(rows *sql.Rows) ([]Item, error) { |
| 374 | items := []Item{} |
| 375 | for rows.Next() { |
| 376 | var it Item |
| 377 | var installed int |
| 378 | if err := rows.Scan(&it.ID, &it.Kind, &it.Name, &it.Description, &it.SourceID, |
| 379 | &it.RepoOwner, &it.RepoName, &it.RepoBranch, &it.ItemPath, &it.InstallKey, |
| 380 | &it.TargetApps, &it.MetadataJSON, &installed, &it.InstalledTargets, |
| 381 | &it.LastSeenAt, &it.CreatedAt, &it.UpdatedAt); err != nil { |
| 382 | return nil, fmt.Errorf("metadata: scan item: %w", err) |
| 383 | } |
| 384 | it.Installed = installed != 0 |
| 385 | items = append(items, it) |
| 386 | } |
| 387 | return items, rows.Err() |
| 388 | } |
| 389 | |
| 390 | func (s *Store) open() (*sql.DB, error) { |
| 391 | if err := os.MkdirAll(filepath.Dir(s.path), 0o700); err != nil { |