use generic SetUserSettings function, remove specific function
This commit is contained in:
parent
3c811c9533
commit
1a41a94b41
@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.32bit.cafe/32bitcafe/guestbook/internal/forms"
|
"git.32bit.cafe/32bitcafe/guestbook/internal/forms"
|
||||||
"git.32bit.cafe/32bitcafe/guestbook/internal/models"
|
"git.32bit.cafe/32bitcafe/guestbook/internal/models"
|
||||||
@ -137,7 +138,7 @@ func (app *application) getUserSettings(w http.ResponseWriter, r *http.Request)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (app *application) putUserSettings(w http.ResponseWriter, r *http.Request) {
|
func (app *application) putUserSettings(w http.ResponseWriter, r *http.Request) {
|
||||||
userId := app.getCurrentUser(r).ID
|
user := app.getCurrentUser(r)
|
||||||
var form forms.UserSettingsForm
|
var form forms.UserSettingsForm
|
||||||
err := app.decodePostForm(r, &form)
|
err := app.decodePostForm(r, &form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -150,7 +151,12 @@ func (app *application) putUserSettings(w http.ResponseWriter, r *http.Request)
|
|||||||
// TODO: rerender template with errors
|
// TODO: rerender template with errors
|
||||||
app.clientError(w, http.StatusUnprocessableEntity)
|
app.clientError(w, http.StatusUnprocessableEntity)
|
||||||
}
|
}
|
||||||
err = app.users.SetLocalTimezone(userId, form.LocalTimezone)
|
user.Settings.LocalTimezone, err = time.LoadLocation(form.LocalTimezone)
|
||||||
|
if err != nil {
|
||||||
|
app.serverError(w, r, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = app.users.UpdateUserSettings(user.ID, user.Settings)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
app.serverError(w, r, err)
|
app.serverError(w, r, err)
|
||||||
return
|
return
|
||||||
|
@ -15,7 +15,7 @@ type UserSettings struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
USER_TIMEZONE = "local_timezone"
|
SettingUserTimezone = "local_timezone"
|
||||||
)
|
)
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
@ -88,6 +88,9 @@ func (m *UserModel) Insert(shortId uint64, username string, email string, passwo
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = m.initializeUserSettings(id, settings)
|
err = m.initializeUserSettings(id, settings)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,7 +204,7 @@ func (m *UserModel) GetSettings(userId int64) (UserSettings, error) {
|
|||||||
return settings, err
|
return settings, err
|
||||||
}
|
}
|
||||||
switch id {
|
switch id {
|
||||||
case m.Settings[USER_TIMEZONE].id:
|
case m.Settings[SettingUserTimezone].id:
|
||||||
settings.LocalTimezone, err = time.LoadLocation(unconstrainedValue.String)
|
settings.LocalTimezone, err = time.LoadLocation(unconstrainedValue.String)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@ -214,7 +217,7 @@ func (m *UserModel) GetSettings(userId int64) (UserSettings, error) {
|
|||||||
func (m *UserModel) initializeUserSettings(userId int64, settings UserSettings) error {
|
func (m *UserModel) initializeUserSettings(userId int64, settings UserSettings) error {
|
||||||
stmt := `INSERT INTO user_settings (UserId, SettingId, AllowedSettingValueId, UnconstrainedValue)
|
stmt := `INSERT INTO user_settings (UserId, SettingId, AllowedSettingValueId, UnconstrainedValue)
|
||||||
VALUES (?, ?, ?, ?)`
|
VALUES (?, ?, ?, ?)`
|
||||||
_, err := m.DB.Exec(stmt, userId, m.Settings[USER_TIMEZONE].id, nil, settings.LocalTimezone.String())
|
_, err := m.DB.Exec(stmt, userId, m.Settings[SettingUserTimezone].id, nil, settings.LocalTimezone.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -222,7 +225,7 @@ func (m *UserModel) initializeUserSettings(userId int64, settings UserSettings)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *UserModel) UpdateUserSettings(userId int64, settings UserSettings) error {
|
func (m *UserModel) UpdateUserSettings(userId int64, settings UserSettings) error {
|
||||||
err := m.UpdateSetting(userId, m.Settings[USER_TIMEZONE], settings.LocalTimezone.String())
|
err := m.UpdateSetting(userId, m.Settings[SettingUserTimezone], settings.LocalTimezone.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -230,6 +233,10 @@ func (m *UserModel) UpdateUserSettings(userId int64, settings UserSettings) erro
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *UserModel) UpdateSetting(userId int64, setting Setting, value string) error {
|
func (m *UserModel) UpdateSetting(userId int64, setting Setting, value string) error {
|
||||||
|
valid := setting.Validate(value)
|
||||||
|
if !valid {
|
||||||
|
return ErrInvalidSettingValue
|
||||||
|
}
|
||||||
stmt := `UPDATE user_settings SET
|
stmt := `UPDATE user_settings SET
|
||||||
AllowedSettingValueId=IFNULL(
|
AllowedSettingValueId=IFNULL(
|
||||||
(SELECT Id FROM allowed_setting_values WHERE SettingId = user_settings.SettingId AND ItemValue = ?), AllowedSettingValueId
|
(SELECT Id FROM allowed_setting_values WHERE SettingId = user_settings.SettingId AND ItemValue = ?), AllowedSettingValueId
|
||||||
@ -250,16 +257,3 @@ func (m *UserModel) UpdateSetting(userId int64, setting Setting, value string) e
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *UserModel) SetLocalTimezone(userId int64, timezone string) error {
|
|
||||||
setting := m.Settings[USER_TIMEZONE]
|
|
||||||
valid := setting.Validate(timezone)
|
|
||||||
if !valid {
|
|
||||||
return ErrInvalidSettingValue
|
|
||||||
}
|
|
||||||
err := m.UpdateSetting(userId, setting, timezone)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user