@Summary Unfavorite workspace by ID. @ID unfavorite-workspace-by-id @Security CoderSessionToken @Tags Workspaces @Param workspace path string true "Workspace ID" format(uuid) @Success 204 @Router /api/v2/workspaces/{workspace}/favorite [delete]
(rw http.ResponseWriter, r *http.Request)
| 1883 | // @Success 204 |
| 1884 | // @Router /api/v2/workspaces/{workspace}/favorite [delete] |
| 1885 | func (api *API) deleteFavoriteWorkspace(rw http.ResponseWriter, r *http.Request) { |
| 1886 | var ( |
| 1887 | ctx = r.Context() |
| 1888 | workspace = httpmw.WorkspaceParam(r) |
| 1889 | apiKey = httpmw.APIKey(r) |
| 1890 | auditor = api.Auditor.Load() |
| 1891 | ) |
| 1892 | |
| 1893 | if apiKey.UserID != workspace.OwnerID { |
| 1894 | httpapi.Write(ctx, rw, http.StatusForbidden, codersdk.Response{ |
| 1895 | Message: "You can only un-favorite workspaces that you own.", |
| 1896 | }) |
| 1897 | return |
| 1898 | } |
| 1899 | |
| 1900 | aReq, commitAudit := audit.InitRequest[database.WorkspaceTable](rw, &audit.RequestParams{ |
| 1901 | Audit: *auditor, |
| 1902 | Log: api.Logger, |
| 1903 | Request: r, |
| 1904 | Action: database.AuditActionWrite, |
| 1905 | OrganizationID: workspace.OrganizationID, |
| 1906 | }) |
| 1907 | |
| 1908 | defer commitAudit() |
| 1909 | aReq.Old = workspace.WorkspaceTable() |
| 1910 | |
| 1911 | err := api.Database.UnfavoriteWorkspace(ctx, workspace.ID) |
| 1912 | if err != nil { |
| 1913 | httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ |
| 1914 | Message: "Internal error unsetting workspace as favorite", |
| 1915 | Detail: err.Error(), |
| 1916 | }) |
| 1917 | return |
| 1918 | } |
| 1919 | aReq.New = workspace.WorkspaceTable() |
| 1920 | aReq.New.Favorite = false |
| 1921 | |
| 1922 | rw.WriteHeader(http.StatusNoContent) |
| 1923 | } |
| 1924 | |
| 1925 | // @Summary Update workspace automatic updates by ID |
| 1926 | // @ID update-workspace-automatic-updates-by-id |
no test coverage detected