f1909da1ad
Go CI / build (push) Failing after 2m42s
feat: create basic server to manage google oauth, account, sessions, places, attributes and ratings.
46 lines
978 B
Go
46 lines
978 B
Go
package store
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
|
|
"git.pengzhan.dev/noteplace-server/internal/models"
|
|
)
|
|
|
|
// GetUserByGoogleID finds a user by their Google ID.
|
|
func (s *Store) GetUserByGoogleID(googleID string) (models.User, bool) {
|
|
s.Mu.RLock()
|
|
defer s.Mu.RUnlock()
|
|
for _, u := range s.Data.Users {
|
|
if u.GoogleID == googleID {
|
|
return u, true
|
|
}
|
|
}
|
|
return models.User{}, false
|
|
}
|
|
|
|
// GetUserByID finds a user by their internal ID.
|
|
func (s *Store) GetUserByID(id string) (models.User, bool) {
|
|
s.Mu.RLock()
|
|
defer s.Mu.RUnlock()
|
|
u, ok := s.Data.Users[id]
|
|
return u, ok
|
|
}
|
|
|
|
// CreateUser adds a new user to the store.
|
|
func (s *Store) CreateUser(user models.User) error {
|
|
s.Mu.Lock()
|
|
defer s.Mu.Unlock()
|
|
s.Data.Users[user.ID] = user
|
|
return s.save()
|
|
}
|
|
|
|
// save is an unexported helper to save the database state.
|
|
func (s *Store) save() error {
|
|
data, err := json.MarshalIndent(s.Data, "", " ")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return os.WriteFile(s.path, data, 0644)
|
|
}
|