ggdgsdbsdbbb / repo / release.v
47 lines · 40 sloc · 1.01 KB · a449238961bbd5f9081831ef9db1ac936909a3e8
Raw
1module main
2
3import time
4
5struct Release {
6 id int @[primary; sql: serial]
7 repo_id int @[unique: 'release']
8mut:
9 tag_id int @[unique: 'release']
10 notes string
11 tag_name string @[skip]
12 tag_hash string @[skip]
13 user string @[skip]
14 date time.Time
15}
16
17pub fn (mut app App) add_release(tag_id int, repo_id int, date time.Time, notes string) ! {
18 release := Release{
19 tag_id: tag_id
20 repo_id: repo_id
21 notes: notes
22 date: date
23 }
24
25 sql app.db {
26 insert release into Release
27 }!
28}
29
30pub fn (mut app App) find_repo_releases_as_page(repo_id int, offset int) []Release {
31 // FIXME: 20 -> releases_per_page
32 return sql app.db {
33 select from Release where repo_id == repo_id order by date desc limit 20 offset offset
34 } or { []Release{} }
35}
36
37pub fn (app App) get_repo_release_count(repo_id int) int {
38 return sql app.db {
39 select count from Release where repo_id == repo_id
40 } or { 0 }
41}
42
43pub fn (mut app App) delete_repo_releases(repo_id int) ! {
44 sql app.db {
45 delete from Release where repo_id == repo_id
46 }!
47}
48