Commit: Bulk unfinished work
This commit is contained in:
48
repositories/message.go
Normal file
48
repositories/message.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"git.kocoder.xyz/kocoded/vt/fx/interfaces/stores"
|
||||
)
|
||||
|
||||
type InMemoryMessageRepository struct {
|
||||
m map[int]*stores.Message
|
||||
}
|
||||
|
||||
func (i *InMemoryMessageRepository) AddMessage(_ context.Context, m *stores.Message) error {
|
||||
i.m[m.Id] = m
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (i *InMemoryMessageRepository) GetMessage(ctx context.Context, id int) (*stores.Message, error) {
|
||||
m, ok := i.m[id]
|
||||
|
||||
if !ok {
|
||||
return nil, errors.New("Message not found")
|
||||
}
|
||||
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (i *InMemoryMessageRepository) ListMessages(ctx context.Context) ([]*stores.Message, error) {
|
||||
messages := make([]*stores.Message, 0, len(i.m))
|
||||
|
||||
for _, v := range i.m {
|
||||
messages = append(messages, v)
|
||||
}
|
||||
|
||||
return messages, nil
|
||||
}
|
||||
|
||||
func (i *InMemoryMessageRepository) RemoveMessage(ctx context.Context, id int) error {
|
||||
delete(i.m, id)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewInMemeoryMessageRepository() stores.MessageStore {
|
||||
return &InMemoryMessageRepository{}
|
||||
}
|
||||
78
repositories/session.go
Normal file
78
repositories/session.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"git.kocoder.xyz/kocoded/vt/fx/interfaces/stores"
|
||||
glide "github.com/valkey-io/valkey-glide/go/v2"
|
||||
)
|
||||
|
||||
type SessionRepository struct {
|
||||
store *glide.Client
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
func NewSessionRepository(store *glide.Client, logger *slog.Logger) stores.SessionStore {
|
||||
return &SessionRepository{store: store, logger: logger}
|
||||
}
|
||||
|
||||
func (sr *SessionRepository) AddSession(s *stores.Session) {
|
||||
// options.HSetExOptions{Expiry: options.NewExpiryIn(time.Hour * 2)}
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second*2)
|
||||
defer cancel()
|
||||
|
||||
_, err := sr.store.HSet(ctx, s.Token, s.Serialize())
|
||||
if err != nil {
|
||||
sr.logger.Error("Error adding session to store", "error", err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
_, err = sr.store.Expire(context.Background(), s.Token, time.Hour*2)
|
||||
if err != nil {
|
||||
sr.logger.Error("Error setting session expiration", "error", err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (sr *SessionRepository) GetSessionFromToken(token string) (*stores.Session, error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second*2)
|
||||
defer cancel()
|
||||
|
||||
s, err := sr.store.HGetAll(ctx, token)
|
||||
if err != nil {
|
||||
sr.logger.Error("Error getting session from store", "error", err)
|
||||
fmt.Println("PANIC - HGETALL")
|
||||
panic(err)
|
||||
}
|
||||
|
||||
_, err = sr.store.Expire(ctx, token, time.Hour*2)
|
||||
if err != nil {
|
||||
sr.logger.Error("Error setting session expiration", "error", err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return (&stores.Session{}).Deserialize(token, s)
|
||||
}
|
||||
func (sr *SessionRepository) SetMandantInSession(token string, mandantId uint) error {
|
||||
_, err := sr.store.HSet(context.Background(), token, map[string]string{"mandantid": strconv.Itoa(int(mandantId))})
|
||||
|
||||
if err != nil {
|
||||
sr.logger.Error("Error setting mandant in session", "error", err)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (sr *SessionRepository) RemoveSession(token string) {
|
||||
_, err := sr.store.HDel(context.Background(), token, []string{"userid", "mandantid"})
|
||||
|
||||
if err != nil {
|
||||
sr.logger.Error("Error removing session from store", "error", err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user