Skip to content

Commit 2fae745

Browse files
author
Dorian Stoll
committedMar 19, 2017
Add event objects
1 parent 074618e commit 2fae745

File tree

2 files changed

+118
-0
lines changed

2 files changed

+118
-0
lines changed
 

‎src/SpaceDock/objects/events.go

+115
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
/*
2+
SpaceDock Backend
3+
API Backend for the SpaceDock infrastructure to host modfiles for various games
4+
5+
SpaceDock Backend is licensed under the Terms of the MIT License.
6+
Copyright (c) 2017 Dorian Stoll (StollD), RockyTV
7+
*/
8+
9+
package objects
10+
11+
import (
12+
"SpaceDock"
13+
)
14+
15+
type DownloadEvent struct {
16+
Model
17+
18+
Mod Mod `json:"-" spacedock:"lock"`
19+
ModID uint `json:"mod" spacedock:"lock"`
20+
Version ModVersion `json:"-" spacedock:"lock"`
21+
VersionID uint `json:"version" spacedock:"lock"`
22+
Downloads int `json:"downloads" spacedock:"lock"`
23+
}
24+
25+
func (s *DownloadEvent) AfterFind() {
26+
if SpaceDock.DBRecursion == 2 {
27+
return
28+
}
29+
isRoot := SpaceDock.DBRecursion == 0
30+
SpaceDock.DBRecursion += 1
31+
SpaceDock.Database.Model(s).Related(&(s.Mod), "Mod").Related(&(s.Version), "Version")
32+
if isRoot {
33+
SpaceDock.DBRecursion = 0
34+
}
35+
}
36+
37+
func NewDownloadEvent(mod Mod, version ModVersion) *DownloadEvent {
38+
d := &DownloadEvent{
39+
Mod: mod,
40+
ModID: mod.ID,
41+
Version: version,
42+
VersionID: version.ID,
43+
Downloads: 0,
44+
}
45+
d.Meta = "{}"
46+
return d
47+
}
48+
49+
/* ========================================= */
50+
51+
type FollowEvent struct {
52+
Model
53+
54+
Mod Mod `json:"-" spacedock:"lock"`
55+
ModID uint `json:"mod" spacedock:"lock"`
56+
Events int `json:"events" spacedock:"lock"`
57+
Delta int `json:"delta" spacedock:"lock"`
58+
}
59+
60+
func (s *FollowEvent) AfterFind() {
61+
if SpaceDock.DBRecursion == 2 {
62+
return
63+
}
64+
isRoot := SpaceDock.DBRecursion == 0
65+
SpaceDock.DBRecursion += 1
66+
SpaceDock.Database.Model(s).Related(&(s.Mod), "Mod")
67+
if isRoot {
68+
SpaceDock.DBRecursion = 0
69+
}
70+
}
71+
72+
func NewFollowEvent(mod Mod) *FollowEvent {
73+
f := &FollowEvent{
74+
Mod: mod,
75+
ModID: mod.ID,
76+
Events: 0,
77+
Delta: 0,
78+
}
79+
f.Meta = "{}"
80+
return f
81+
}
82+
83+
/* ========================================= */
84+
85+
type ReferralEvent struct {
86+
Model
87+
88+
Mod Mod `json:"-" spacedock:"lock"`
89+
ModID uint `json:"mod" spacedock:"lock"`
90+
Events int `json:"events" spacedock:"lock"`
91+
Host string `json:"host" gorm:"size:128" spacedock:"lock"`
92+
}
93+
94+
func (s *ReferralEvent) AfterFind() {
95+
if SpaceDock.DBRecursion == 2 {
96+
return
97+
}
98+
isRoot := SpaceDock.DBRecursion == 0
99+
SpaceDock.DBRecursion += 1
100+
SpaceDock.Database.Model(s).Related(&(s.Mod), "Mod")
101+
if isRoot {
102+
SpaceDock.DBRecursion = 0
103+
}
104+
}
105+
106+
func NewReferralEvent(mod Mod, host string) *ReferralEvent {
107+
r := &ReferralEvent{
108+
Mod: mod,
109+
ModID: mod.ID,
110+
Events: 0,
111+
Host: host,
112+
}
113+
r.Meta = "{}"
114+
return r
115+
}

‎src/SpaceDock/objects/init.go

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ import "SpaceDock"
1515
*/
1616
func init() {
1717
SpaceDock.CreateTable(&Ability{})
18+
SpaceDock.CreateTable(&DownloadEvent{})
19+
SpaceDock.CreateTable(&FollowEvent{})
20+
SpaceDock.CreateTable(&ReferralEvent{})
1821
SpaceDock.CreateTable(&Featured{})
1922
SpaceDock.CreateTable(&Game{})
2023
SpaceDock.CreateTable(&GameVersion{})

0 commit comments

Comments
 (0)
Please sign in to comment.