Skip to content

Commit f1d9ba1

Browse files
committed
save
1 parent a530419 commit f1d9ba1

File tree

4 files changed

+91
-1
lines changed

4 files changed

+91
-1
lines changed

models/migrations/migrations.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,7 @@ func prepareMigrationTasks() []*migration {
373373

374374
// Gitea 1.23.0-rc0 ends at migration ID number 311 (database version 312)
375375
newMigration(312, "Add DeleteBranchAfterMerge to AutoMerge", v1_24.AddDeleteBranchAfterMergeForAutoMerge),
376+
newMigration(314, "Add star_list table", v1_24.AddStarList),
376377
}
377378
return preparedMigrations
378379
}

models/migrations/v1_24/v314.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// Copyright 2025 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package v1_24 //nolint
5+
6+
import (
7+
"code.gitea.io/gitea/modules/timeutil"
8+
9+
"xorm.io/xorm"
10+
)
11+
12+
type Star struct {
13+
StarListID int64 `xorm:"UNIQUE(s)"`
14+
}
15+
16+
type StarList struct {
17+
ID int64 `xorm:"pk autoincr"`
18+
UID int64 `xorm:"INDEX"`
19+
Name string
20+
Desc string
21+
22+
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
23+
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
24+
}
25+
26+
// TableName return database table name for xorm
27+
func (StarList) TableName() string {
28+
return "star_list"
29+
}
30+
31+
func AddStarList(x *xorm.Engine) error {
32+
sess := x.NewSession()
33+
defer sess.Close()
34+
if err := sess.Begin(); err != nil {
35+
return err
36+
}
37+
err := sess.Sync(new(Star))
38+
if err != nil {
39+
return err
40+
}
41+
err = sess.Sync(new(StarList))
42+
if err != nil {
43+
return err
44+
}
45+
return sess.Commit()
46+
}

models/repo/star.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ type Star struct {
1616
ID int64 `xorm:"pk autoincr"`
1717
UID int64 `xorm:"UNIQUE(s)"`
1818
RepoID int64 `xorm:"UNIQUE(s)"`
19+
StarListID int64 `xorm:"UNIQUE(s)"`
1920
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
2021
}
2122

models/repo/star_list.go

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
package repo
55

66
import (
7+
"context"
8+
79
"code.gitea.io/gitea/models/db"
810
"code.gitea.io/gitea/modules/timeutil"
911
)
@@ -12,14 +14,54 @@ import (
1214
type StarList struct {
1315
ID int64 `xorm:"pk autoincr"`
1416
UID int64 `xorm:"INDEX"`
15-
SID int64 `xorm:"INDEX"`
1617
Name string
1718
Desc string
1819

20+
StarIDs []int64 `xorm:"-"`
21+
Repos []Repository `xorm:"-"`
22+
1923
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
2024
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
2125
}
2226

2327
func init() {
2428
db.RegisterModel(new(StarList))
2529
}
30+
31+
func (list *StarList) GetCount() int64 {
32+
var star Star
33+
count, err := db.GetEngine(context.Background()).Where("star_list_id = ?", list.ID).Count(star)
34+
if err != nil {
35+
return 0
36+
}
37+
return count
38+
}
39+
40+
func (list *StarList) LoadStars() {
41+
var star []Star
42+
err := db.GetEngine(context.Background()).Where("star_list_id = ?", list.ID).Find(&star)
43+
if err != nil {
44+
return
45+
}
46+
for _, star := range star {
47+
list.StarIDs = append(list.StarIDs, star.ID)
48+
}
49+
}
50+
51+
func GetStarListByUID(ctx context.Context, uid int64) ([]*StarList, error) {
52+
var list []*StarList
53+
err := db.GetEngine(ctx).Where("uid = ?", uid).Find(&list)
54+
if err != nil {
55+
return nil, err
56+
}
57+
return list, nil
58+
}
59+
60+
func GetReposByStarListID(ctx context.Context, starListID int64) ([]*Repository, error) {
61+
repos := make([]*Repository, 0, 100)
62+
err := db.GetEngine(ctx).Where("star_list_id = ?", starListID).Find(&repos)
63+
if err != nil {
64+
return nil, err
65+
}
66+
return repos, nil
67+
}

0 commit comments

Comments
 (0)