forked from ar3s3ru/pbg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mechanisms.go
94 lines (78 loc) · 2.65 KB
/
mechanisms.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package pbg
import (
"gopkg.in/mgo.v2/bson"
"time"
)
type (
// Interfaccia per accedere al logger di un particolare componente del framework
// Esegue un log.Logger.Println() sotto il tappeto (in genere)
Logger interface {
// Scrive le interfacce passate sul logger del componente
Log(...interface{})
}
// Componente software che identifica il DB dei modelli Pokèmon
// Permette di fornire un'interfaccia d'accesso al DB e di richiederla indietro
// (utile nel caso di ObjectPools)
PokèmonDBComponent interface {
Supply() PokèmonDBInterface
Retrieve(PokèmonDBInterface)
}
// Interfaccia software che permette di eseguire operazioni CRUD
// sul DB dei Pokèmon
PokèmonDBInterface interface {
Logger
GetPokèmon(id int) (Pokèmon, error)
GetPokèmons() []Pokèmon
}
// Componente software che identifica il DB dei modelli Mosse
// Permette di fornire un'interfaccia d'accesso al DB e di richiederla indietro
// (utile nel caso di ObjectPools)
MoveDBComponent interface {
Supply() MoveDBInterface
Retrieve(MoveDBInterface)
}
// Interfaccia software che permette di eseguire operazioni CRUD
// sul DB delle Mosse
MoveDBInterface interface {
Logger
GetMove(id int) (Move, error)
GetMoves() []Move
}
// Componente software che identifica il DB dei modelli Allenatori
// Permette di fornire un'interfaccia d'accesso al DB e di richiederla indietro
// (utile nel caso di ObjectPools)
TrainerDBComponent interface {
Supply() TrainerDBInterface
Retrieve(TrainerDBInterface)
}
// Interfaccia software che permette di eseguire operazioni CRUD
// sul DB degli Allenatori
TrainerDBInterface interface {
Logger
AddTrainer(user, pass string) (bson.ObjectId, error)
GetTrainerByName(name string) (Trainer, error)
GetTrainerById(id bson.ObjectId) (Trainer, error)
DeleteTrainer(id bson.ObjectId) error
}
// Componente software che identifica il DB delle sessioni del server
// Permette di fornire e richiedere indietro un'interfaccia di accesso al DB
// (utile nel caso di ObjectPools)
SessionComponent interface {
// Fornisce un'interfaccia al DB delle sessioni
Supply() SessionInterface
// Richiede indietro l'interfaccia fornita in precedenza
Retrieve(SessionInterface)
// Elimina tutte le sessioni scadute dal DB
Purge()
}
// Interfaccia software che permette di eseguire determinate operazioni
// sul DB delle sessioni del server.
SessionInterface interface {
Logger
// Operazioni CRUD -------------------------
// -----------------------------------------
AddSession(trainer Trainer, expire time.Time) (Session, error)
GetSession(token string) (Session, error)
DeleteSession(token string) error
}
)