This commit is contained in:
asteam
2024-10-01 11:15:36 +03:00
commit a25a3c2e5c
81 changed files with 5143 additions and 0 deletions

17
pkg/folder/folders.go Normal file
View File

@@ -0,0 +1,17 @@
package folder
import (
"repository.basistech.ru/BASIS/dynamix-standart-go-sdk/interfaces"
)
// Structure for creating request to folders
type Folder struct {
client interfaces.Caller
}
// Builder for file share endpoints
func New(client interfaces.Caller) *Folder {
return &Folder{
client,
}
}

42
pkg/folder/list.go Normal file
View File

@@ -0,0 +1,42 @@
package folder
import (
"context"
"encoding/json"
"net/http"
"repository.basistech.ru/BASIS/dynamix-standart-go-sdk/internal/constants"
"repository.basistech.ru/BASIS/dynamix-standart-go-sdk/internal/validators"
"repository.basistech.ru/BASIS/dynamix-standart-go-sdk/pkg/folder/models"
"repository.basistech.ru/BASIS/dynamix-standart-go-sdk/pkg/folder/requests"
)
// List gets a list of all folder
func (f Folder) List(ctx context.Context, req requests.ListFolderRequest) (*models.ListFolderResponse, error) {
res, err := f.ListRaw(ctx, req)
if err != nil {
return nil, err
}
list := models.ListFolderResponse{}
err = json.Unmarshal(res, &list)
if err != nil {
return nil, err
}
return &list, nil
}
// ListRaw gets a list of all folders as an array of bytes
func (f Folder) ListRaw(ctx context.Context, req requests.ListFolderRequest) ([]byte, error) {
if err := validators.ValidateRequest(req); err != nil {
return nil, validators.ValidationErrors(validators.GetErrors(err))
}
url := constants.APIv0 + "/folder"
res, err := f.client.ApiCall(ctx, http.MethodGet, url, req)
return res, err
}

View File

@@ -0,0 +1,26 @@
package models
import "time"
type ListFolderResponse struct {
List ListFolder `json:"folder_list"`
RequestID string `json:"request_id"`
}
type ListFolder struct {
Total int `json:"total"`
Page int `json:"page"`
PerPage int `json:"per_page"`
IsApproximateTotal bool `json:"is_approximate_total"`
Items []ItemFolder `json:"items"`
HasMore bool `json:"has_more"`
}
type ItemFolder struct {
FolderID int `json:"folder_id"`
Deleted time.Time `json:"deleted"`
Name string `json:"name"`
IconType any `json:"icon_type"`
Created time.Time `json:"created"`
ParentID any `json:"parent_id"`
}

View File

@@ -0,0 +1,50 @@
package requests
import "time"
// ListRequest represents the request for retrieving a list of folders.
type ListFolderRequest struct {
// Folder name.
// Required: false
Name string `url:"name,omitempty" json:"name,omitempty"`
// Folder icon type.
// Required: false
IconType string `url:"icon_type,omitempty" json:"icon_type,omitempty"`
// Folder ID of the parent folder. "root" if there is no parent folder.
// Required: false
ParentID string `url:"parent_id,omitempty" json:"parent_id,omitempty"`
// Template for filtering by any text field.
// Required: false
FilterText string `url:"filter_text,omitempty" json:"filter_text,omitempty"`
// List of columns that will be used by FilterText.
// Required: false
FilterColumns string `url:"filter_columns,omitempty" json:"filter_columns,omitempty"`
// Filter entities created before this date.
// Required: false
CreatedBefore time.Time `url:"created_before,omitempty" json:"created_before,omitempty"`
// Filter entities created after this date.
// Required: false
CreatedAfter time.Time `url:"created_after,omitempty" json:"created_after,omitempty"`
// Field name or list of field names used for sorting. Ascending sort is default. For descending sort, use "-" before the name.
// Required: false
Sort []string `url:"sort,omitempty" json:"sort,omitempty"`
// Visibility options: "visible" - Only active folders, "deleted" - Only removed folders, "all" - All folders.
// Required: false
Visibility string `url:"visibility,omitempty" json:"visibility,omitempty" validate:"omitempty,visibility"`
// Number of the returning page.
// Required: false
Page int `url:"page,omitempty" json:"page,omitempty"`
// Number of items on the page.
// Required: false
Limit int `url:"limit,omitempty" json:"limit,omitempty"`
}