Skip to content

Commit

Permalink
🦄 refactor: settings groups have been modified
Browse files Browse the repository at this point in the history
  • Loading branch information
shurco committed Dec 10, 2023
1 parent d4987ab commit 88258b4
Show file tree
Hide file tree
Showing 40 changed files with 1,329 additions and 531 deletions.
4 changes: 4 additions & 0 deletions fixtures/migration/20230714135999_migration_name.sql
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ UPDATE setting SET value = '1025' WHERE key = 'smtp_port';
UPDATE setting SET value = 'username' WHERE key = 'smtp_username';
UPDATE setting SET value = 'password' WHERE key = 'smtp_password';
UPDATE setting SET value = 'None' WHERE key = 'smtp_encryption';
UPDATE setting SET value = 'User Name from site' WHERE key = 'mail_sender_name';
UPDATE setting SET value = 'user@mail.com' WHERE key = 'mail_sender_email';

UPDATE page SET content = '<h1><strong>Lorem Ipsum content</strong></h1><p>Lorem ipsum dolor sit amet. Non culpa fugiat Aut distinctio nam placeat fuga ut eveniet natus et blanditiis ullam qui velit accusamus. Ex omnis quos <em>Sed officia ut reprehenderit autem non optio recusandae</em> ut omnis atque et totam quas cum illum laudantium. Ex doloribus ipsum qui ipsa autemNam sapiente aut dignissimos voluptas sed autem voluptatem aut quis asperiores.</p><h2><strong>33 quam voluptatum sed quia suscipit in modi quia.</strong></h2><p>Quo quos reiciendis Non laborum aut corrupti nobis qui delectus velit est vero numquam et neque aperiam. Aut quaerat autemNon deleniti et assumenda alias ut officiis laboriosam. Qui tenetur assumenda <em>Cum molestiae</em> quo nihil aliquam cum galisum minima.</p><ol><li><p>Est error saepe a placeat galisum et tempore deleniti.</p></li><li><p>Et rerum obcaecati vel alias nobis ut illo incidunt.</p></li><li><p>Non nisi itaque non atque minima.</p></li><li><p>Eum dolor fuga eos magnam omnis.</p></li><li><p>33 iure enim aut commodi magni et quis sunt quo totam enim.</p></li></ol><blockquote><p>Sit culpa impedit aut commodi cupiditate vel alias voluptatem ad enim ipsa qui saepe odit aut vitae quas!</p></blockquote><h3><strong>Et nihil repellat qui ratione doloremque aut neque tempore.</strong></h3><p>Ea molestias tenetur <em>Ea nihil ea pariatur dolores qui odio nisi</em> quo ipsum nisi! Aut quia consequatur et earum voluptassed beatae! Eum eligendi quosNon accusamus est voluptas incidunt.</p><ul><li><p>Et mollitia quos 33 quia repudiandae ab beatae dignissimos 33 pariatur architecto?</p></li><li><p>Est officia enim aut dolor sapiente et aliquam amet?</p></li><li><p>Id atque consequatur eos similique iure sed eveniet accusantium.</p></li><li><p>Aut suscipit doloribus non consequuntur perferendis et velit quam.</p></li><li><p>At animi laudantium qui mollitia earum cum cupiditate dolor.</p></li></ul>' WHERE id = 'ig9jpCixAgAu31f';
UPDATE page SET content = '<h1><strong>Lorem Ipsum content</strong></h1><p>Lorem ipsum dolor sit amet. Sit animi repellat aut quas fugitQui repudiandae. Non error officiis <strong>Ea tempora et dicta quos ut assumenda aliquam non distinctio quae</strong>! Rem nobis vero <em>Aut quidem et quaerat adipisci sed voluptatem velit</em> quo sunt placeat sed voluptatem alias sit voluptas sequi. Non aliquam perferendis et voluptatem minusEt rerum est voluptatum atque.</p><h2><strong>Et repudiandae galisum et assumenda excepturi aut eius aspernatur.</strong></h2><p>Qui quas accusamus et officia molestiaequi ipsum id laudantium itaque. Eum temporibus itaqueaut reprehenderit id numquam quisquam.</p><ul><li><p>Ea fugiat dolore est consequatur repellat est nobis rerum qui nostrum ipsa.</p></li><li><p>Est officia molestias et cupiditate eligendi ea molestiae quasi et quia doloribus.</p></li><li><p>Ad iusto quam quo nostrum error sit natus labore aut suscipit accusantium.</p></li><li><p>Et repudiandae aperiam ut facere aliquam et neque minima sit impedit dolorem.</p></li><li><p>Nam minus velit qui iure omnis quo debitis voluptatibus.</p></li><li><p>Et nihil sunt At dolores sequi id dolorem itaque ea rerum quia?</p></li></ul><blockquote><p>Et mollitia voluptatem ut fugiat odio et natus nulla ut exercitationem ipsum eum fuga distinctio.</p></blockquote><h3><strong>Qui ullam libero sed nobis dolores.</strong></h3><p>Qui modi dignissimos sed eius nostrum Est harum et cumque iste et commodi illum qui dolorum maiores est harum assumenda. Id labore sint <em>Aut quas aut repudiandae quasi aut cupiditate quia</em> aut consectetur dolor qui ducimus distinctio sit aspernatur recusandae.</p><ol><li><p>Rem dignissimos rerum ut commodi iusto cum iste sequi sit consectetur autem.</p></li><li><p>Aut saepe culpa aut deserunt libero ea vitae quisquam aut dolore voluptas.</p></li><li><p>Sit quae pariatur vel explicabo omnis At sequi inventore.</p></li><li><p>Cum magnam consequuntur qui veniam modi est reprehenderit enim.</p></li><li><p>Sed voluptatem odit sit dolores minima.</p></li></ol>' WHERE id = 'sdH0wGM54e3mZC2';
Expand Down Expand Up @@ -91,5 +93,7 @@ UPDATE setting SET value = '' WHERE key = 'smtp_port';
UPDATE setting SET value = '' WHERE key = 'smtp_username';
UPDATE setting SET value = '' WHERE key = 'smtp_password';
UPDATE setting SET value = '' WHERE key = 'smtp_encryption';
UPDATE setting SET value = '' WHERE key = 'mail_sender_email';
UPDATE setting SET value = '' WHERE key = 'mail_sender_name';
DELETE FROM subdomain;
-- +goose StatementEnd
6 changes: 0 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,8 @@ github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9
github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofiber/contrib/fiberzerolog v0.2.2 h1:tvHBW5k+udW02LU1eNneh65znGwhsKcv8XWf22U7dlc=
github.com/gofiber/contrib/fiberzerolog v0.2.2/go.mod h1:CSpu4UUPGWAA/jIIuHXIhJt3W1cRxprxupXndAYuvpU=
github.com/gofiber/contrib/fiberzerolog v0.2.3 h1:aWCKktmeyG8sc0KkvuVYXapPSN0Lyd7yXvbbm+2PeI0=
github.com/gofiber/contrib/fiberzerolog v0.2.3/go.mod h1:/w6tdELq7u/DNwbQW6RFztoUYcoFs+WpunfkBoyU04M=
github.com/gofiber/contrib/jwt v1.0.7 h1:LZuCnjEq8AjiDTUjBQSd2zg3H5uDWjHxSXjo7nj9iAc=
github.com/gofiber/contrib/jwt v1.0.7/go.mod h1:fA1apg9zQlUhax+Foc0BHATCDzBsemga1Yr9X0KSvrQ=
github.com/gofiber/contrib/jwt v1.0.8 h1:/GeOsm/Mr1OGr0GTy+RIVSz5VgNNyP3ZgK4wdqxF/WY=
github.com/gofiber/contrib/jwt v1.0.8/go.mod h1:gWWBtBiLmKXRN7xy6a96QO0KGvPEyxdh8x496Ujtg84=
github.com/gofiber/fiber/v2 v2.51.0 h1:JNACcZy5e2tGApWB2QrRpenTWn0fq0hkFm6k0C86gKQ=
Expand Down Expand Up @@ -236,8 +232,6 @@ modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk=
modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM=
modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=
modernc.org/libc v1.36.0 h1:J5UW1tOzu8d2NY8XtQ/tAHJuCcn0b062EkCY91drjX4=
modernc.org/libc v1.36.0/go.mod h1:YAXkAZ8ktnkCKaN9sw/UDeUVkGYJ/YquGO4FTi5nmHE=
modernc.org/libc v1.37.0 h1:WerjebcsP6A7Jy+f2lCnHAkiSTLf7IaSftBYUtoswak=
modernc.org/libc v1.37.0/go.mod h1:YAXkAZ8ktnkCKaN9sw/UDeUVkGYJ/YquGO4FTi5nmHE=
modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
Expand Down
4 changes: 2 additions & 2 deletions internal/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,11 +163,11 @@ func InstallCheck(c *fiber.Ctx) error {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

response, err := db.GetSettingByKey(ctx, "installed")
response, err := db.GetSettingByKey(ctx, "installed", "password")
if err != nil {
return webutil.StatusBadRequest(c, err.Error())
}
install, _ := strconv.ParseBool(response.Value.(string))
install, _ := strconv.ParseBool(response[0].Value.(string))

if !install {
if !strings.HasPrefix(c.Path(), "/_/install") && !strings.HasPrefix(c.Path(), "/_/assets") && !strings.HasPrefix(c.Path(), "/api") {
Expand Down
6 changes: 2 additions & 4 deletions internal/handlers/private/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,10 @@ func SignIn(c *fiber.Ctx) error {
}

// Generate a new pair of access and refresh tokens.
_settingJWT, err := db.GetSetting(c.Context(), &models.JWT{})
settingJWT, err := queries.GetSettingByGroup[models.JWT](c.Context(), db)
if err != nil {
return err
}
settingJWT := _settingJWT.(*models.JWT)

userID := uuid.New()
expires := time.Now().Add(time.Hour * time.Duration(settingJWT.ExpireHours)).Unix()
Expand Down Expand Up @@ -70,11 +69,10 @@ func SignIn(c *fiber.Ctx) error {
// [post] /api/sign/out
func SignOut(c *fiber.Ctx) error {
db := queries.DB()
_settingJWT, err := db.GetSetting(c.Context(), &models.JWT{})
settingJWT, err := queries.GetSettingByGroup[models.JWT](c.Context(), db)
if err != nil {
return err
}
settingJWT := _settingJWT.(*models.JWT)

claims, err := jwtutil.ExtractTokenMetadata(c, settingJWT.Secret)
if err != nil {
Expand Down
30 changes: 19 additions & 11 deletions internal/handlers/private/setting.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,21 +72,25 @@ func GetSetting(c *fiber.Ctx) error {
case "password":
return webutil.StatusNotFound(c)
case "main":
section, err = db.GetSetting(c.Context(), &models.Main{})
section, err = db.GetSettingByGroup(c.Context(), &models.Main{})
case "social":
section, err = db.GetSetting(c.Context(), &models.Social{})
section, err = db.GetSettingByGroup(c.Context(), &models.Social{})
case "auth":
section, err = db.GetSettingByGroup(c.Context(), &models.Auth{})
case "jwt":
section, err = db.GetSetting(c.Context(), &models.JWT{})
section, err = db.GetSettingByGroup(c.Context(), &models.JWT{})
case "webhook":
section, err = db.GetSetting(c.Context(), &models.Webhook{})
section, err = db.GetSettingByGroup(c.Context(), &models.Webhook{})
case "payment":
section, err = db.GetSettingByGroup(c.Context(), &models.Payment{})
case "stripe":
section, err = db.GetSetting(c.Context(), &models.Stripe{})
section, err = db.GetSettingByGroup(c.Context(), &models.Stripe{})
case "paypal":
section, err = db.GetSetting(c.Context(), &models.Paypal{})
section, err = db.GetSettingByGroup(c.Context(), &models.Paypal{})
case "spectrocoin":
section, err = db.GetSetting(c.Context(), &models.Spectrocoin{})
section, err = db.GetSettingByGroup(c.Context(), &models.Spectrocoin{})
case "mail":
section, err = db.GetSetting(c.Context(), &models.SMTP{})
section, err = db.GetSettingByGroup(c.Context(), &models.Mail{})
default:
section, err = db.GetSettingByKey(c.Context(), settingKey)
}
Expand All @@ -112,10 +116,14 @@ func UpdateSetting(c *fiber.Ctx) error {
request = &models.Password{}
case "main":
request = &models.Main{}
case "auth":
request = &models.Auth{}
case "jwt":
request = &models.JWT{}
case "social":
request = &models.Social{}
case "payment":
request = &models.Payment{}
case "stripe":
request = &models.Stripe{}
case "paypal":
Expand All @@ -125,7 +133,7 @@ func UpdateSetting(c *fiber.Ctx) error {
case "webhook":
request = &models.Webhook{}
case "mail":
request = &models.SMTP{}
request = &models.Mail{}
default:
request = &models.SettingName{Key: settingKey}
}
Expand All @@ -149,11 +157,11 @@ func UpdateSetting(c *fiber.Ctx) error {
if err := db.UpdateSettingByKey(c.Context(), request.(*models.SettingName)); err != nil {
return webutil.StatusBadRequest(c, err.Error())
}
return webutil.Response(c, fiber.StatusOK, "Setting updated", nil)
return webutil.Response(c, fiber.StatusOK, "Setting key updated", nil)
}

// Update setting for all other cases
if err := db.UpdateSetting(c.Context(), request); err != nil {
if err := db.UpdateSettingByGroup(c.Context(), request); err != nil {
return webutil.StatusBadRequest(c, err.Error())
}

Expand Down
21 changes: 8 additions & 13 deletions internal/handlers/public/cart.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func PaymentList(c *fiber.Ctx) error {
// Payment is ...
// [post] /cart/payment
func Payment(c *fiber.Ctx) error {
payment := new(models.Payment)
payment := new(models.CartPayment)

if err := c.BodyParser(payment); err != nil {
return webutil.StatusBadRequest(c, err.Error())
Expand All @@ -42,7 +42,7 @@ func Payment(c *fiber.Ctx) error {
if err != nil {
return webutil.StatusBadRequest(c, err.Error())
}
domain := response.Value
domain := response[0].Value

products, err := db.ListProducts(c.Context(), false, payment.Products...)
if err != nil {
Expand Down Expand Up @@ -87,7 +87,7 @@ func Payment(c *fiber.Ctx) error {

cart := litepay.Cart{
ID: security.RandomString(),
Currency: currency.Value.(string),
Currency: currency[0].Value.(string),
Items: items,
}

Expand All @@ -100,11 +100,10 @@ func Payment(c *fiber.Ctx) error {
paymentSystem := payment.Provider
switch paymentSystem {
case litepay.STRIPE:
_setting, err := db.GetSetting(c.Context(), &models.Stripe{})
setting, err := queries.GetSettingByGroup[models.Stripe](c.Context(), db)
if err != nil {
return webutil.StatusBadRequest(c, err.Error())
}
setting := _setting.(*models.Stripe)

if !setting.Active {
return webutil.Response(c, fiber.StatusOK, "Payment url", paymentURL)
Expand All @@ -117,11 +116,10 @@ func Payment(c *fiber.Ctx) error {
paymentURL = response.URL

case litepay.PAYPAL:
_setting, err := db.GetSetting(c.Context(), &models.Paypal{})
setting, err := queries.GetSettingByGroup[models.Paypal](c.Context(), db)
if err != nil {
return webutil.StatusBadRequest(c, err.Error())
}
setting := _setting.(*models.Paypal)

if !setting.Active {
return webutil.Response(c, fiber.StatusOK, "Payment url", paymentURL)
Expand All @@ -134,11 +132,10 @@ func Payment(c *fiber.Ctx) error {
paymentURL = response.URL

case litepay.SPECTROCOIN:
_setting, err := db.GetSetting(c.Context(), &models.Spectrocoin{})
setting, err := queries.GetSettingByGroup[models.Spectrocoin](c.Context(), db)
if err != nil {
return webutil.StatusBadRequest(c, err.Error())
}
setting := _setting.(*models.Spectrocoin)

if !setting.Active {
return webutil.Response(c, fiber.StatusOK, "Payment url", paymentURL)
Expand Down Expand Up @@ -283,11 +280,10 @@ func PaymentSuccess(c *fiber.Ctx) error {
switch payment.PaymentSystem {
case litepay.STRIPE:
sessionStripe := c.Query("session")
_setting, err := db.GetSetting(c.Context(), &models.Stripe{})
setting, err := queries.GetSettingByGroup[models.Stripe](c.Context(), db)
if err != nil {
return webutil.StatusBadRequest(c, err.Error())
}
setting := _setting.(*models.Stripe)

if !setting.Active {
return webutil.StatusBadRequest(c, err.Error())
Expand All @@ -301,11 +297,10 @@ func PaymentSuccess(c *fiber.Ctx) error {

case litepay.PAYPAL:
tokenPaypal := c.Query("token")
_setting, err := db.GetSetting(c.Context(), &models.Paypal{})
setting, err := queries.GetSettingByGroup[models.Paypal](c.Context(), db)
if err != nil {
return webutil.StatusBadRequest(c, err.Error())
}
setting := _setting.(*models.Paypal)

if !setting.Active {
return webutil.StatusBadRequest(c, err.Error())
Expand Down
18 changes: 11 additions & 7 deletions internal/handlers/public/setting.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,17 @@ func Ping(c *fiber.Ctx) error {
func Settings(c *fiber.Ctx) error {
db := queries.DB()

settingMain, err := db.GetSetting(c.Context(), &models.Main{})
settingMain, err := queries.GetSettingByGroup[models.Main](c.Context(), db)
if err != nil {
return webutil.StatusBadRequest(c, err.Error())
}
_settingMain := settingMain.(*models.Main)

settingSocial, err := db.GetSetting(c.Context(), &models.Social{})
settingSocial, err := queries.GetSettingByGroup[models.Social](c.Context(), db)
if err != nil {
return webutil.StatusBadRequest(c, err.Error())
}

settingPayment, err := queries.GetSettingByGroup[models.Payment](c.Context(), db)
if err != nil {
return webutil.StatusBadRequest(c, err.Error())
}
Expand All @@ -37,11 +41,11 @@ func Settings(c *fiber.Ctx) error {

return webutil.Response(c, fiber.StatusOK, "Settings", map[string]any{
"main": map[string]string{
"site_name": _settingMain.SiteName,
"domain": _settingMain.Domain,
"currency": _settingMain.Currency,
"site_name": settingMain.SiteName,
"domain": settingMain.Domain,
"currency": settingPayment.Currency,
},
"socials": settingSocial.(*models.Social),
"socials": settingSocial,
"pages": pages,
})
}
Loading

0 comments on commit 88258b4

Please sign in to comment.