Compare commits
2
Commits
bc87f656c8
...
441c47163c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
441c47163c | ||
|
|
017ee61c99 |
@@ -5,6 +5,8 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
|
ports:
|
||||||
|
- "15432:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/dttmr-api/postgresql:/var/lib/postgresql/data
|
- /srv/dttmr-api/postgresql:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ func NewAuthHandler(authService *domain.AuthService) *AuthHandler {
|
|||||||
// @Success 200 {object} domain.TokenPair
|
// @Success 200 {object} domain.TokenPair
|
||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to login"
|
// @Error 500 {object} response.ErrorResponse "failed to login"
|
||||||
// @Router /api/v1/login [post]
|
// @Router /login [post]
|
||||||
func (h *AuthHandler) Login(w http.ResponseWriter, r *http.Request) {
|
func (h *AuthHandler) Login(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ func (h *AuthHandler) Login(w http.ResponseWriter, r *http.Request) {
|
|||||||
// @Success 200 {object} domain.TokenPair
|
// @Success 200 {object} domain.TokenPair
|
||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to refresh token"
|
// @Error 500 {object} response.ErrorResponse "failed to refresh token"
|
||||||
// @Router /api/v1/login/refresh [post]
|
// @Router /login/refresh [post]
|
||||||
func (h *AuthHandler) Refresh(w http.ResponseWriter, r *http.Request) {
|
func (h *AuthHandler) Refresh(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ func (h *AuthHandler) Refresh(w http.ResponseWriter, r *http.Request) {
|
|||||||
// @Success 200 {object} nil
|
// @Success 200 {object} nil
|
||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to logout"
|
// @Error 500 {object} response.ErrorResponse "failed to logout"
|
||||||
// @Router /api/v1/logout [post]
|
// @Router /logout [post]
|
||||||
func (h *AuthHandler) Logout(w http.ResponseWriter, r *http.Request) {
|
func (h *AuthHandler) Logout(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ func (h *AuthHandler) Logout(w http.ResponseWriter, r *http.Request) {
|
|||||||
// @Success 200 {object} nil
|
// @Success 200 {object} nil
|
||||||
// @Error 401 {object} response.ErrorResponse "failed to get auth context"
|
// @Error 401 {object} response.ErrorResponse "failed to get auth context"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to logout"
|
// @Error 500 {object} response.ErrorResponse "failed to logout"
|
||||||
// @Router /api/v1/logout/all [post]
|
// @Router /logout/all [post]
|
||||||
func (h *AuthHandler) LogoutAllDevices(w http.ResponseWriter, r *http.Request) {
|
func (h *AuthHandler) LogoutAllDevices(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ type apiResponse struct {
|
|||||||
// @Accept json
|
// @Accept json
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Success 200 {object} apiResponse
|
// @Success 200 {object} apiResponse
|
||||||
// @Router /api/v1/ [get]
|
// @Router / [get]
|
||||||
func DefaultHandler(w http.ResponseWriter, r *http.Request) {
|
func DefaultHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ func NewListHandler(listService *domain.ListService) *ListHandler {
|
|||||||
// @Success 201 {object} domain.List
|
// @Success 201 {object} domain.List
|
||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to create list"
|
// @Error 500 {object} response.ErrorResponse "failed to create list"
|
||||||
// @Router /api/v1/lists [post]
|
// @Router /lists [post]
|
||||||
func (h *ListHandler) CreateList(w http.ResponseWriter, r *http.Request) {
|
func (h *ListHandler) CreateList(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ func (h *ListHandler) CreateList(w http.ResponseWriter, r *http.Request) {
|
|||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request url"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request url"
|
||||||
// @Error 401 {object} response.ErrorResponse "not authorized"
|
// @Error 401 {object} response.ErrorResponse "not authorized"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to read lists"
|
// @Error 500 {object} response.ErrorResponse "failed to read lists"
|
||||||
// @Router /api/v1/lists [get]
|
// @Router /lists [get]
|
||||||
func (h *ListHandler) GetLists(w http.ResponseWriter, r *http.Request) {
|
func (h *ListHandler) GetLists(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ func (h *ListHandler) GetLists(w http.ResponseWriter, r *http.Request) {
|
|||||||
// @Success 204 {object} nil
|
// @Success 204 {object} nil
|
||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to add user to list"
|
// @Error 500 {object} response.ErrorResponse "failed to add user to list"
|
||||||
// @Router /api/v1/lists/user [post]
|
// @Router /lists/user [post]
|
||||||
func (h *ListHandler) AddUserToList(w http.ResponseWriter, r *http.Request) {
|
func (h *ListHandler) AddUserToList(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@@ -140,7 +140,7 @@ func (h *ListHandler) AddUserToList(w http.ResponseWriter, r *http.Request) {
|
|||||||
// @Success 204 {object} nil
|
// @Success 204 {object} nil
|
||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to remove user from list"
|
// @Error 500 {object} response.ErrorResponse "failed to remove user from list"
|
||||||
// @Router /api/v1/lists/user [delete]
|
// @Router /lists/user [delete]
|
||||||
func (h *ListHandler) RemoveUserFromList(w http.ResponseWriter, r *http.Request) {
|
func (h *ListHandler) RemoveUserFromList(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@@ -180,7 +180,7 @@ func (h *ListHandler) RemoveUserFromList(w http.ResponseWriter, r *http.Request)
|
|||||||
// @Success 204 {object} nil
|
// @Success 204 {object} nil
|
||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to create list item"
|
// @Error 500 {object} response.ErrorResponse "failed to create list item"
|
||||||
// @Router /api/v1/lists/item [post]
|
// @Router /lists/item [post]
|
||||||
func (h *ListHandler) CreateListItem(w http.ResponseWriter, r *http.Request) {
|
func (h *ListHandler) CreateListItem(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@@ -220,7 +220,7 @@ func (h *ListHandler) CreateListItem(w http.ResponseWriter, r *http.Request) {
|
|||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
||||||
// @Error 401 {object} response.ErrorResponse "not authorized"
|
// @Error 401 {object} response.ErrorResponse "not authorized"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to update list item"
|
// @Error 500 {object} response.ErrorResponse "failed to update list item"
|
||||||
// @Router /api/v1/lists/item [put]
|
// @Router /lists/item [put]
|
||||||
func (h *ListHandler) UpdateListItem(w http.ResponseWriter, r *http.Request) {
|
func (h *ListHandler) UpdateListItem(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@@ -261,7 +261,7 @@ func (h *ListHandler) UpdateListItem(w http.ResponseWriter, r *http.Request) {
|
|||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
||||||
// @Error 401 {object} response.ErrorResponse "not authorized"
|
// @Error 401 {object} response.ErrorResponse "not authorized"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to update list item"
|
// @Error 500 {object} response.ErrorResponse "failed to update list item"
|
||||||
// @Router /api/v1/lists/items/{id} [post]
|
// @Router /lists/items/{id} [post]
|
||||||
func (h *ListHandler) SetListItemCompleted(w http.ResponseWriter, r *http.Request) {
|
func (h *ListHandler) SetListItemCompleted(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@@ -307,7 +307,7 @@ func (h *ListHandler) SetListItemCompleted(w http.ResponseWriter, r *http.Reques
|
|||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request url"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request url"
|
||||||
// @Error 401 {object} response.ErrorResponse "not authorized"
|
// @Error 401 {object} response.ErrorResponse "not authorized"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to read list items"
|
// @Error 500 {object} response.ErrorResponse "failed to read list items"
|
||||||
// @Router /api/v1/lists/{id} [get]
|
// @Router /lists/{id} [get]
|
||||||
func (h *ListHandler) GetListItems(w http.ResponseWriter, r *http.Request) {
|
func (h *ListHandler) GetListItems(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ func NewUserHandler(userService *domain.UserService) *UserHandler {
|
|||||||
// @Success 201 {object} domain.User
|
// @Success 201 {object} domain.User
|
||||||
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
// @Error 400 {object} response.ErrorResponse "failed to decode request body"
|
||||||
// @Error 500 {object} response.ErrorResponse "failed to create user"
|
// @Error 500 {object} response.ErrorResponse "failed to create user"
|
||||||
// @Router /api/v1/users [post]
|
// @Router /users [post]
|
||||||
func (h *UserHandler) CreateUser(w http.ResponseWriter, r *http.Request) {
|
func (h *UserHandler) CreateUser(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ CREATE TABLE IF NOT EXISTS list_users (
|
|||||||
PRIMARY KEY (list_id, user_id)
|
PRIMARY KEY (list_id, user_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX idx_list_users_list_id_user_id ON list_users(list_id, user_id);
|
||||||
CREATE INDEX idx_list_users_user_id ON list_users(user_id);
|
CREATE INDEX idx_list_users_user_id ON list_users(user_id);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS list_items (
|
CREATE TABLE IF NOT EXISTS list_items (
|
||||||
|
|||||||
Reference in New Issue
Block a user