/
invite.go
57 lines (49 loc) · 1.31 KB
/
invite.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
package domain
import (
"database/sql/driver"
"gorm.io/gorm"
"time"
)
type MeetingDuration time.Duration
type InviteRequest struct {
MeetingID string
InviterID uint
InviteeUsername string
MeetingPlatformID uint
}
type Invite struct {
gorm.Model
MeetingID string
MeetingStartTime time.Time
MeetingDuration MeetingDuration
MeetingTitle string
MeetingDescription string
MeetingPlatformID uint
MeetingJoinURL string
InviterID uint
InviteeID uint
}
func (m *MeetingDuration) Scan(src interface{}) error {
var duration time.Duration = time.Duration(src.(int64))
*m = MeetingDuration(time.Minute * duration)
return nil
}
func (m MeetingDuration) Value() (driver.Value, error) {
return time.Duration(m).Minutes(), nil
}
type InviteRepository interface {
Create(invite *Invite) (uint, error)
GetByID(ID uint) (*Invite, error)
GetAllByInvitee(inviteeID uint) ([]*Invite, error)
GetAllByInviter(inviteeID uint) ([]*Invite, error)
DeleteAllByMeetingID(meetingID string) error
Delete(ID uint) error
}
type InviteService interface {
SendInvite(invite *InviteRequest) (uint, error)
GetAllReceivedInvites(userID uint) ([]*Invite, error)
GetAllSentInvites(userID uint) ([]*Invite, error)
GetInvite(inviteID uint) (*Invite, error)
DeleteInvite(inviteID uint) error
DeleteAllInvitesByMeetingID(meetingID string) error
}