···
func AddStar(e Execer, star *models.Star) error {
-
query := `insert or ignore into stars (starred_by_did, repo_at, rkey) values (?, ?, ?)`
···
-
func GetStar(e Execer, starredByDid string, repoAt syntax.ATURI) (*models.Star, error) {
-
select starred_by_did, repo_at, created, rkey
-
where starred_by_did = ? and repo_at = ?`
-
row := e.QueryRow(query, starredByDid, repoAt)
-
err := row.Scan(&star.StarredByDid, &star.RepoAt, &created, &star.Rkey)
···
-
func DeleteStar(e Execer, starredByDid string, repoAt syntax.ATURI) error {
-
_, err := e.Exec(`delete from stars where starred_by_did = ? and repo_at = ?`, starredByDid, repoAt)
-
func DeleteStarByRkey(e Execer, starredByDid string, rkey string) error {
-
_, err := e.Exec(`delete from stars where starred_by_did = ? and rkey = ?`, starredByDid, rkey)
-
func GetStarCount(e Execer, repoAt syntax.ATURI) (int, error) {
-
`select count(starred_by_did) from stars where repo_at = ?`, repoAt).Scan(&stars)
···
-
WHERE starred_by_did = ? AND repo_at IN (%s)
`, strings.Join(placeholders, ","))
rows, err := e.Query(query, args...)
···
-
func GetStarStatus(e Execer, userDid string, repoAt syntax.ATURI) bool {
-
statuses, err := getStarStatuses(e, userDid, []syntax.ATURI{repoAt})
-
return statuses[repoAt.String()]
// GetStarStatuses returns a map of repo URIs to star status for a given user
-
func GetStarStatuses(e Execer, userDid string, repoAts []syntax.ATURI) (map[string]bool, error) {
-
return getStarStatuses(e, userDid, repoAts)
-
func GetStars(e Execer, limit int, filters ...filter) ([]models.Star, error) {
for _, filter := range filters {
···
repoQuery := fmt.Sprintf(
-
`select starred_by_did, repo_at, created, rkey
···
-
err := rows.Scan(&star.StarredByDid, &star.RepoAt, &created, &star.Rkey)
···
for _, r := range repos {
if stars, ok := starMap[string(r.RepoAt())]; ok {
-
var stars []models.Star
-
for _, s := range starMap {
-
stars = append(stars, s...)
-
slices.SortFunc(stars, func(a, b models.Star) int {
if a.Created.After(b.Created) {
···
func CountStars(e Execer, filters ...filter) (int64, error) {
···
-
func GetAllStars(e Execer, limit int) ([]models.Star, error) {
-
var stars []models.Star
-
join repos r on s.repo_at = r.at_uri
-
var starCreatedAt, repoCreatedAt string
-
star.Created, err = time.Parse(time.RFC3339, starCreatedAt)
-
star.Created = time.Now()
-
repo.Created, err = time.Parse(time.RFC3339, repoCreatedAt)
-
repo.Created = time.Now()
-
stars = append(stars, star)
-
if err := rows.Err(); err != nil {
// GetTopStarredReposLastWeek returns the top 8 most starred repositories from the last week
func GetTopStarredReposLastWeek(e Execer) ([]models.Repo, error) {
// first, get the top repo URIs by star count from the last week
with recent_starred_repos as (
-
select distinct repo_at
where created >= datetime('now', '-7 days')
count(*) as stars_gained_last_week
-
join recent_starred_repos rsr on s.repo_at = rsr.repo_at
where s.created >= datetime('now', '-7 days')
from repo_star_counts rsc
order by rsc.stars_gained_last_week desc
···
func AddStar(e Execer, star *models.Star) error {
+
query := `insert or ignore into stars (did, subject_at, rkey) values (?, ?, ?)`
···
+
func GetStar(e Execer, did string, subjectAt syntax.ATURI) (*models.Star, error) {
+
select did, subject_at, created, rkey
+
where did = ? and subject_at = ?`
+
row := e.QueryRow(query, did, subjectAt)
+
err := row.Scan(&star.Did, &star.RepoAt, &created, &star.Rkey)
···
+
func DeleteStar(e Execer, did string, subjectAt syntax.ATURI) error {
+
_, err := e.Exec(`delete from stars where did = ? and subject_at = ?`, did, subjectAt)
+
func DeleteStarByRkey(e Execer, did string, rkey string) error {
+
_, err := e.Exec(`delete from stars where did = ? and rkey = ?`, did, rkey)
+
func GetStarCount(e Execer, subjectAt syntax.ATURI) (int, error) {
+
`select count(did) from stars where subject_at = ?`, subjectAt).Scan(&stars)
···
+
WHERE did = ? AND subject_at IN (%s)
`, strings.Join(placeholders, ","))
rows, err := e.Query(query, args...)
···
+
func GetStarStatus(e Execer, userDid string, subjectAt syntax.ATURI) bool {
+
statuses, err := getStarStatuses(e, userDid, []syntax.ATURI{subjectAt})
+
return statuses[subjectAt.String()]
// GetStarStatuses returns a map of repo URIs to star status for a given user
+
func GetStarStatuses(e Execer, userDid string, subjectAts []syntax.ATURI) (map[string]bool, error) {
+
return getStarStatuses(e, userDid, subjectAts)
+
// GetRepoStars return a list of stars each holding target repository.
+
// If there isn't known repo with starred at-uri, those stars will be ignored.
+
func GetRepoStars(e Execer, limit int, filters ...filter) ([]models.RepoStar, error) {
for _, filter := range filters {
···
repoQuery := fmt.Sprintf(
+
`select did, subject_at, created, rkey
···
+
err := rows.Scan(&star.Did, &star.RepoAt, &created, &star.Rkey)
···
+
var repoStars []models.RepoStar
for _, r := range repos {
if stars, ok := starMap[string(r.RepoAt())]; ok {
+
for _, star := range stars {
+
repoStars = append(repoStars, models.RepoStar{
+
slices.SortFunc(repoStars, func(a, b models.RepoStar) int {
if a.Created.After(b.Created) {
···
func CountStars(e Execer, filters ...filter) (int64, error) {
···
// GetTopStarredReposLastWeek returns the top 8 most starred repositories from the last week
func GetTopStarredReposLastWeek(e Execer) ([]models.Repo, error) {
// first, get the top repo URIs by star count from the last week
with recent_starred_repos as (
+
select distinct subject_at
where created >= datetime('now', '-7 days')
count(*) as stars_gained_last_week
+
join recent_starred_repos rsr on s.subject_at = rsr.subject_at
where s.created >= datetime('now', '-7 days')
from repo_star_counts rsc
order by rsc.stars_gained_last_week desc