Initial commit: Open sourcing all of the Maple Open Technologies code.

This commit is contained in:
Bartlomiej Mika 2025-12-02 14:33:08 -05:00
commit 755d54a99d
2010 changed files with 448675 additions and 0 deletions

View file

@ -0,0 +1,55 @@
package session
import (
"encoding/json"
"codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/domain/session"
"codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/pkg/storage"
)
const sessionKey = "current_session"
type repository struct {
storage storage.Storage
}
// ProvideRepository creates a session repository for Wire
func ProvideRepository(storage storage.Storage) session.Repository {
return &repository{storage: storage}
}
func (r *repository) Save(sess *session.Session) error {
data, err := json.Marshal(sess)
if err != nil {
return err
}
return r.storage.Set(sessionKey, data)
}
func (r *repository) Get() (*session.Session, error) {
data, err := r.storage.Get(sessionKey)
if err != nil {
return nil, err
}
if data == nil {
return nil, nil
}
var sess session.Session
if err := json.Unmarshal(data, &sess); err != nil {
return nil, err
}
return &sess, nil
}
func (r *repository) Delete() error {
return r.storage.Delete(sessionKey)
}
func (r *repository) Exists() (bool, error) {
data, err := r.storage.Get(sessionKey)
if err != nil {
return false, err
}
return data != nil, nil
}