Add login

This commit is contained in:
2020-01-05 23:20:38 +01:00
parent dc396a300f
commit c0926ffea0
35 changed files with 1647 additions and 39 deletions

67
storage/model/error.go Executable file
View File

@@ -0,0 +1,67 @@
package model
import (
"fmt"
"github.com/lib/pq"
"net/http"
)
var (
// 400
ErrBadRequestFormat = APIError{
Type: "bad_format",
HTTPCode: http.StatusBadRequest,
Description: "unable to read request body, please check that the json is valid",
}
ErrDataValidation = APIError{
Type: "data_validation",
HTTPCode: http.StatusBadRequest,
Description: "the data are not valid",
}
// 404
ErrNotFound = APIError{
Type: "not_found",
HTTPCode: http.StatusNotFound,
}
// 40x
ErrAlreadyExists = APIError{
Type: "already_exists",
HTTPCode: http.StatusConflict,
}
// 50x
ErrInternalServer = APIError{
Type: "internal_server_error",
HTTPCode: http.StatusInternalServerError,
}
)
type APIError struct {
HTTPCode int `json:"-"`
Type string `json:"error"`
Description string `json:"error_description"`
Details []FieldError `json:"error_details,omitempty"`
Headers map[string][]string `json:"-"`
}
type FieldError struct {
Field string `json:"field"`
Constraint string `json:"constraint"`
Description string `json:"description"`
}
func (e *APIError) Error() string {
return fmt.Sprintf("error : %d, %s, %s, %v", e.HTTPCode, e.Type, e.Description, e.Details)
}
func FromPostgresError(err *pq.Error) *APIError {
return &APIError{
HTTPCode: 0,
Type: "",
Description: "",
Details: nil,
Headers: nil,
}
}

16
storage/model/user.go Executable file
View File

@@ -0,0 +1,16 @@
package model
import "time"
type User struct {
UserEditable
ID string `json:"id"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt *time.Time `json:"updatedAt"`
GoogleId string `json:"-"`
}
type UserEditable struct {
Email string `json:"email" validate:"required"`
Nickname string `json:"nickname" validate:"required"`
}

View File

@@ -0,0 +1,17 @@
package model
import "time"
type UserData struct {
UserEditable
ID string `json:"id"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt *time.Time `json:"updatedAt"`
}
type UserDataEditable struct {
UserId string `json:'userId'`
Type string `json:"type"`
Name string `json:"name"`
Content string `json:"content"`
}