/
session_dao.go
75 lines (56 loc) · 1.5 KB
/
session_dao.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
65
66
67
68
69
70
71
72
73
74
75
package rest
import (
_ "github.com/jinzhu/gorm/dialects/mysql"
"github.com/nu7hatch/gouuid"
"time"
)
type SessionDao struct {
BaseDao
}
//构造函数
func NewSessionDao(context *Context) *SessionDao {
var sessionDao = &SessionDao{}
sessionDao.Init(context)
return sessionDao
}
//按照Id查询session.
func (this *SessionDao) FindByUuid(uuid string) *Session {
// Read
var session = &Session{}
db := this.context.DB.Where(&Session{Base: Base{Uuid: uuid}}).First(session)
if db.Error != nil {
return nil
}
return session
}
//按照Id查询session.
func (this *SessionDao) CheckByUuid(uuid string) *Session {
// Read
var session = &Session{}
db := this.context.DB.Where(&Session{Base: Base{Uuid: uuid}}).First(session)
this.PanicError(db.Error)
return session
}
//按照authentication查询用户。
func (this *SessionDao) FindByAuthentication(authentication string) *Session {
var session = &Session{}
db := this.context.DB.Where(&Session{Authentication: authentication}).First(session)
if db.Error != nil {
return nil
}
return session
}
//创建一个session并且持久化到数据库中。
func (this *SessionDao) Create(session *Session) *Session {
timeUUID, _ := uuid.NewV4()
session.Uuid = string(timeUUID.String())
db := this.context.DB.Create(session)
this.PanicError(db.Error)
return session
}
func (this *SessionDao) Delete(uuid string) {
session := this.CheckByUuid(uuid)
session.ExpireTime = time.Now()
db := this.context.DB.Delete(session)
this.PanicError(db.Error)
}