| 1 | module main |
| 2 | |
| 3 | import time |
| 4 | |
| 5 | struct Release { |
| 6 | id int @[primary; sql: serial] |
| 7 | repo_id int @[unique: 'release'] |
| 8 | mut: |
| 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 | |
| 17 | pub 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 | |
| 30 | pub 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 | |
| 37 | pub 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 | |
| 43 | pub 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 | |