forgejo-sdk/docs/migrate-v0.12-to-v0.13.md
6543 51d1bddc8a Make http requests with context (#417)
Functional Options dont have a reason for an error (at the moment)

fix test & code comment

md format

add SetSudo

always use Context

Add Migration Docu

Use Functional Options fo NewClient

Merge branch 'master' into with-ctx

optional exec http requests with context

Co-authored-by: 6543 <6543@obermui.de>
Reviewed-on: https://gitea.com/gitea/go-sdk/pulls/417
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-by: John Olheiser <john.olheiser@gmail.com>
2020-09-15 16:21:40 +00:00

88 lines
3.1 KiB
Markdown

# Migration Guide: v0.12 to v0.13
v0.13.0 introduces a number of breaking changes, throu it should not be hard to migrate.
Just follow this guid and if issues still ocure ask for help on discord or
feel free to create an issue.
<!-- toc -->
- [EditMilestoneOption use StateType (#350)](#EditMilestoneOption-use-StateType)
- [RepoSearch Options Struct was rewritten (#346)](#RepoSearch-Options-Struct-was-rewritten)
- [Variable Renames (#386)](#Variable-Renames)
- [Change Type of Permission Field (#408)](#Change-Type-of-Permission-Field)
- [All Function return http responce (#416)](#All-Function-return-http-responce)
- [NewClient has new Option Interface (#417)](#NewClient-has-new-Option-Interface)
<!-- tocstop -->
## EditMilestoneOption use StateType
Instead of a raw string StateType is now used for State too.
just replace old strings with new enum.
Pulls:
- [#350 EditMilestoneOption also use StateType](https://gitea.com/gitea/go-sdk/pulls/350)
## RepoSearch Options Struct was rewritten
Since the API itself is ugly and there was no nameconvention whats o ever.
You easely can pass the wrong options and dont get the result you want.
Now it is rewritten and translated for the API.
The easyest way to migrate is to look at who this function is used and rewritten that code block.
If there is a special edgecase you have you can pass a `RawQuery` to the API endpoint.
Pulls:
- [#346 Refactor RepoSearch to be easy usable](https://gitea.com/gitea/go-sdk/pulls/346)
## Variable Renames
Some names of strcut options have been renamed to describe there function/usecase more precisely.
if you use `CreateOrgOption` somewhere just rename `UserName` to `Name`.
Pulls:
- [#386 CreateOrgOption rename UserName to Name](https://gitea.com/gitea/go-sdk/pulls/386)
## Change Type of Permission Field
The following functions are affected: ListOrgTeams, ListMyTeams, GetTeam, CreateTeam, EditTeam and AddCollaborator
The `Permission` field has changed type from `string` to `AccessMode`,
which represent the raw strings you must use before.
Just replace the string with the AccessMode equivalent.
Pulls:
- [#408 Use enum AccessMode for OrgTeam and Collaborator functions](https://gitea.com/gitea/go-sdk/pulls/408)
## All Function return http responce
All functions got one new return (`Responce`)!
If you just like to migrate, add `_,` before the error return.
example:
```diff
- user, err := c.GetMyUserInfo()
+ user, _, err := c.GetMyUserInfo()
```
If you like to check responce if an error ocure, make sure responce is not nil!
If an error ocure before an http request (e.g. gitea is to old), it will be nil.
Pulls:
- [#416 All Function return http responce](https://gitea.com/gitea/go-sdk/pulls/416)
## NewClient has new Option Interface
function `NewClient` use functional options now.
If you simply like to migrate replace `client := NewClient(giteaUrl, token)` with `client, _ := NewClient(giteaURL, SetToken(token))`.
If you like tu utilize them, currently there are: SetContext, SetBasicAuth, SetOTP, SetToken, SetHTTPClient, SetSudo
Pulls:
- [#417 Make http requests with context](https://gitea.com/gitea/go-sdk/pulls/417)