feat: create basic server to manage google oauth, account, sessions, places, attributes and ratings.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user