/
repos_db.go
64 lines (50 loc) · 1.42 KB
/
repos_db.go
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
62
63
64
package db
import (
"context"
"log"
"github.com/g00gol/frieren/backend/types"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
)
func GetReposByFilters(filter any) ([]types.Repo, error) {
collection := GetCollection("repos")
// Specify options to use for string comparison
opts := options.Find().SetCollation(&options.Collation{
Locale: "en",
Strength: 1,
})
cursor, err := collection.Find(context.TODO(), filter, opts)
if err != nil {
log.Println("Error finding repos:", err)
return nil, err
}
defer cursor.Close(context.TODO())
var data []types.Repo
if err := cursor.All(context.Background(), &data); err != nil {
log.Println("Error decoding cursor results:", err)
return nil, err
}
return data, err
}
func GetRepoByName(name string) (types.Repo, error) {
collection := GetCollection("repos")
var data types.Repo
filter := bson.D{{Key: "name", Value: name}}
err := collection.FindOne(context.TODO(), filter).Decode(&data)
if err != nil {
log.Println("Error finding repo:", err)
return types.Repo{}, err
}
log.Println("Found repo:", data)
return data, err
}
func DeleteRepoByName(name string) (int64, error) {
collection := GetCollection("repos")
filter := bson.D{{Key: "name", Value: name}}
result, err := collection.DeleteOne(context.TODO(), filter)
if err != nil {
log.Println("Error deleting repo:", err)
return 0, err
}
return result.DeletedCount, err
}