Skip to content

Instantly share code, notes, and snippets.

> propAlphasCorrect :: String -> Bool
> propAlphasCorrect xs = isCorrect (alphas xs)
> where
> isCorrect ys = all (isAlpha) ys
> propUppersCorrect :: String -> Bool
> propUppersCorrect xs = isCorrect (uppers xs)
> where
> isCorrect ys = all (isUpper) ys
> alphas :: String -> String
> alphas xs = filter (isAlpha) xs
> propAlphasCorrect :: String -> Bool
> propAlphasCorrect xs = isCorrect (alphas xs)
> where
> isCorrect ys = all (isAlpha) ys
> uppers :: String -> String
package entities
import (
"errors"
ERROR "go_clean_api/api/shared/constants/errors"
v "go_clean_api/api/shared/validators"
)
type UniqueEntityID = string
package entities
import (
"errors"
ERROR "go_clean_api/api/shared/constants/errors"
v "go_clean_api/api/shared/validators"
"time"
)
type User struct {
package entities
type AccessDetails struct {
AccessUUID string `json:"access_uuid"`
UserID UniqueEntityID `json:"user_id"`
}
package entities
type TokenDetails struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
AccessUuid string `json:"access_uuid"`
RefreshUuid string `json:"refresh_uuid"`
AtExpires int64 `json:"at_expires"`
RtExpires int64 `json:"rt_expires"`
}
package login
import (
"go_clean_api/api/entities"
"go_clean_api/api/usecases/common"
)
type LoginGateway interface {
CreateAuth(userid entities.UniqueEntityID, td *entities.TokenDetails) error
CompareHashAndPassword(hash string, p string) error
package login
import (
"fmt"
"go_clean_api/api/entities"
ERROR "go_clean_api/api/shared/constants/errors"
"go_clean_api/api/usecases/common"
)
type LoginInteractor struct {
package controllers
import (
"go_clean_api/api/usecases/common"
interactor "go_clean_api/api/usecases/login"
)
type LoginController struct {
Interactor interactor.LoginInteractor
}
package presenters
import (
ERROR "go_clean_api/api/shared/constants/errors"
"go_clean_api/api/usecases/common"
interactor "go_clean_api/api/usecases/login"
"net/http"
)
type LoginPresenter struct{}