fix(quality): switch linter and fix errors

This commit is contained in:
2024-12-02 23:26:26 +01:00
parent 7c67720621
commit 0accb49871
7 changed files with 38 additions and 26 deletions

View File

@@ -1,10 +1,16 @@
FROM golang:1.23.3@sha256:73f06be4578c9987ce560087e2e2ea6485fb605e3910542cadd8fa09fc5f3e31 AS builder_go FROM golang:1.23.3@sha256:73f06be4578c9987ce560087e2e2ea6485fb605e3910542cadd8fa09fc5f3e31 AS builder_go
WORKDIR /me-fit WORKDIR /me-fit
RUN go install github.com/a-h/templ/cmd/templ@latest && go install github.com/vektra/mockery/v2@latest && go install honnef.co/go/tools/cmd/staticcheck@latest RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.62.2
RUN go install github.com/a-h/templ/cmd/templ@latest
RUN go install github.com/vektra/mockery/v2@latest
COPY go.mod go.sum ./ COPY go.mod go.sum ./
RUN go mod download RUN go mod download
COPY . ./ COPY . ./
RUN templ generate && mockery --log-level warn && staticcheck ./... && go test ./... && go build -o /me-fit/me-fit . RUN templ generate
RUN mockery --log-level warn
RUN go test ./...
RUN golangci-lint run ./...
RUN go build -o /me-fit/me-fit .
FROM node:22.11.0@sha256:5c76d05034644fa8ecc9c2aa84e0a83cd981d0ef13af5455b87b9adf5b216561 AS builder_node FROM node:22.11.0@sha256:5c76d05034644fa8ecc9c2aa84e0a83cd981d0ef13af5455b87b9adf5b216561 AS builder_node

View File

@@ -79,7 +79,6 @@ type AuthDb interface {
GetUser(email string) (*User, error) GetUser(email string) (*User, error)
GetUserById(userId uuid.UUID) (*User, error) GetUserById(userId uuid.UUID) (*User, error)
DeleteUser(userId uuid.UUID) error DeleteUser(userId uuid.UUID) error
UpdateUserPassword(userId uuid.UUID, newHash []byte) error
InsertEmailVerificationToken(userId uuid.UUID, token string) error InsertEmailVerificationToken(userId uuid.UUID, token string) error
InsertForgotPasswordToken(email string, token string) error InsertForgotPasswordToken(email string, token string) error
@@ -200,28 +199,28 @@ func (db AuthDbSqlite) DeleteUser(userId uuid.UUID) error {
_, err = tx.Exec("DELETE FROM workout WHERE user_id = ?", userId) _, err = tx.Exec("DELETE FROM workout WHERE user_id = ?", userId)
if err != nil { if err != nil {
tx.Rollback() _ = tx.Rollback()
utils.LogError("Could not delete workouts", err) utils.LogError("Could not delete workouts", err)
return types.ErrInternal return types.ErrInternal
} }
_, err = tx.Exec("DELETE FROM user_token WHERE user_uuid = ?", userId) _, err = tx.Exec("DELETE FROM user_token WHERE user_uuid = ?", userId)
if err != nil { if err != nil {
tx.Rollback() _ = tx.Rollback()
utils.LogError("Could not delete user tokens", err) utils.LogError("Could not delete user tokens", err)
return types.ErrInternal return types.ErrInternal
} }
_, err = tx.Exec("DELETE FROM session WHERE user_uuid = ?", userId) _, err = tx.Exec("DELETE FROM session WHERE user_uuid = ?", userId)
if err != nil { if err != nil {
tx.Rollback() _ = tx.Rollback()
utils.LogError("Could not delete sessions", err) utils.LogError("Could not delete sessions", err)
return types.ErrInternal return types.ErrInternal
} }
_, err = tx.Exec("DELETE FROM user WHERE user_uuid = ?", userId) _, err = tx.Exec("DELETE FROM user WHERE user_uuid = ?", userId)
if err != nil { if err != nil {
tx.Rollback() _ = tx.Rollback()
utils.LogError("Could not delete user", err) utils.LogError("Could not delete user", err)
return types.ErrInternal return types.ErrInternal
} }
@@ -235,15 +234,6 @@ func (db AuthDbSqlite) DeleteUser(userId uuid.UUID) error {
return nil return nil
} }
func (db AuthDbSqlite) UpdateUserPassword(userId uuid.UUID, newHash []byte) error {
_, err := db.db.Exec("UPDATE user SET password = ? WHERE user_uuid = ?", newHash, userId)
if err != nil {
utils.LogError("Could not update password", err)
return types.ErrInternal
}
return nil
}
func (db AuthDbSqlite) InsertEmailVerificationToken(userId uuid.UUID, token string) error { func (db AuthDbSqlite) InsertEmailVerificationToken(userId uuid.UUID, token string) error {
_, err := db.db.Exec(` _, err := db.db.Exec(`
INSERT INTO user_token (user_uuid, type, token, created_at) INSERT INTO user_token (user_uuid, type, token, created_at)

View File

@@ -329,7 +329,10 @@ func (handler HandlerAuthImpl) HandleVerifyResendComp() http.HandlerFunc {
go handler.service.SendVerificationMail(user.Id, user.Email) go handler.service.SendVerificationMail(user.Id, user.Email)
w.Write([]byte("<p class=\"mt-8\">Verification email sent</p>")) _, err = w.Write([]byte("<p class=\"mt-8\">Verification email sent</p>"))
if err != nil {
utils.LogError("Could not write response", err)
}
} }
} }

View File

@@ -106,7 +106,12 @@ func (handler WorkoutHandlerImpl) handleGetWorkout() http.HandlerFunc {
wos = append(wos, workout.Workout{Id: wo.RowId, Date: wo.Date, Type: wo.Type, Sets: wo.Sets, Reps: wo.Reps}) wos = append(wos, workout.Workout{Id: wo.RowId, Date: wo.Date, Type: wo.Type, Sets: wo.Sets, Reps: wo.Reps})
} }
workout.WorkoutListComp(wos).Render(r.Context(), w) err = workout.WorkoutListComp(wos).Render(r.Context(), w)
if err != nil {
utils.LogError("Could not render workoutlist", err)
utils.TriggerToast(w, r, "error", "Internal Server Error")
http.Error(w, err.Error(), http.StatusInternalServerError)
}
} }
} }

View File

@@ -280,7 +280,9 @@ func (service AuthServiceImpl) ChangePassword(user *User, currPass, newPass stri
newHash := GetHashPassword(newPass, userDb.Salt) newHash := GetHashPassword(newPass, userDb.Salt)
err = service.dbAuth.UpdateUserPassword(user.Id, newHash) userDb.Password = newHash
err = service.dbAuth.UpdateUser(userDb)
if err != nil { if err != nil {
return err return err
} }
@@ -304,7 +306,7 @@ func (service AuthServiceImpl) ForgotPassword(email string) error {
utils.LogError("Could not render reset password email", err) utils.LogError("Could not render reset password email", err)
return types.ErrInternal return types.ErrInternal
} }
service.mailService.SendMail(email, "Reset Password", mail.String()) go service.mailService.SendMail(email, "Reset Password", mail.String())
} }
return nil return nil

View File

@@ -238,7 +238,7 @@ func TestSendVerificationMail(t *testing.T) {
mockAuthDb.EXPECT().GetEmailVerificationToken(userId).Return(token, nil) mockAuthDb.EXPECT().GetEmailVerificationToken(userId).Return(token, nil)
mockMail.EXPECT().SendMail(email, "Welcome to ME-FIT", mock.MatchedBy(func(message string) bool { return strings.Contains(message, token) })).Return(nil) mockMail.EXPECT().SendMail(email, "Welcome to ME-FIT", mock.MatchedBy(func(message string) bool { return strings.Contains(message, token) })).Return()
underTest := NewAuthServiceImpl(mockAuthDb, mockRandom, mockClock, mockMail, &types.ServerSettings{}) underTest := NewAuthServiceImpl(mockAuthDb, mockRandom, mockClock, mockMail, &types.ServerSettings{})

View File

@@ -2,12 +2,15 @@ package service
import ( import (
"fmt" "fmt"
"me-fit/types"
"net/smtp" "net/smtp"
"me-fit/types"
"me-fit/utils"
) )
type MailService interface { type MailService interface {
SendMail(to string, subject string, message string) error // Sending an email is a fire and forget operation. Thus no error handling
SendMail(to string, subject string, message string)
} }
type MailServiceImpl struct { type MailServiceImpl struct {
@@ -18,9 +21,9 @@ func NewMailServiceImpl(serverSettings *types.ServerSettings) MailServiceImpl {
return MailServiceImpl{serverSettings: serverSettings} return MailServiceImpl{serverSettings: serverSettings}
} }
func (m MailServiceImpl) SendMail(to string, subject string, message string) error { func (m MailServiceImpl) SendMail(to string, subject string, message string) {
if m.serverSettings.Smtp == nil { if m.serverSettings.Smtp == nil {
return nil return
} }
s := m.serverSettings.Smtp s := m.serverSettings.Smtp
@@ -29,5 +32,8 @@ func (m MailServiceImpl) SendMail(to string, subject string, message string) err
msg := fmt.Sprintf("From: %v <%v>\nTo: %v\nSubject: %v\nMIME-version: 1.0;\nContent-Type: text/html; charset=\"UTF-8\";\n\n%v", s.FromName, s.FromMail, to, subject, message) msg := fmt.Sprintf("From: %v <%v>\nTo: %v\nSubject: %v\nMIME-version: 1.0;\nContent-Type: text/html; charset=\"UTF-8\";\n\n%v", s.FromName, s.FromMail, to, subject, message)
return smtp.SendMail(s.Host+":"+s.Port, auth, s.FromMail, []string{to}, []byte(msg)) err := smtp.SendMail(s.Host+":"+s.Port, auth, s.FromMail, []string{to}, []byte(msg))
if err != nil {
utils.LogError("Error sending mail: %v", err)
}
} }