@ -16,6 +16,7 @@
package org.thingsboard.server.controller ;
import io.swagger.v3.oas.annotations.Parameter ;
import io.swagger.v3.oas.annotations.media.Schema ;
import lombok.RequiredArgsConstructor ;
import lombok.extern.slf4j.Slf4j ;
import org.springframework.http.HttpStatus ;
@ -24,17 +25,26 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody ;
import org.springframework.web.bind.annotation.RequestMapping ;
import org.springframework.web.bind.annotation.RequestMethod ;
import org.springframework.web.bind.annotation.RequestParam ;
import org.springframework.web.bind.annotation.ResponseBody ;
import org.springframework.web.bind.annotation.ResponseStatus ;
import org.springframework.web.bind.annotation.RestController ;
import org.thingsboard.server.common.data.cf.CalculatedField ;
import org.thingsboard.server.common.data.exception.ThingsboardException ;
import org.thingsboard.server.common.data.id.CalculatedFieldId ;
import org.thingsboard.server.common.data.page.PageData ;
import org.thingsboard.server.common.data.page.PageLink ;
import org.thingsboard.server.config.annotations.ApiOperation ;
import org.thingsboard.server.queue.util.TbCoreComponent ;
import org.thingsboard.server.service.entitiy.cf.TbCalculatedFieldService ;
import org.thingsboard.server.service.security.permission.Operation ;
import static org.thingsboard.server.controller.ControllerConstants.CF_TEXT_SEARCH_DESCRIPTION ;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_DATA_PARAMETERS ;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_NUMBER_DESCRIPTION ;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_SIZE_DESCRIPTION ;
import static org.thingsboard.server.controller.ControllerConstants.SORT_ORDER_DESCRIPTION ;
import static org.thingsboard.server.controller.ControllerConstants.SORT_PROPERTY_DESCRIPTION ;
import static org.thingsboard.server.controller.ControllerConstants.TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH ;
import static org.thingsboard.server.controller.ControllerConstants.UUID_WIKI_LINK ;
@ -81,6 +91,26 @@ public class CalculatedFieldController extends BaseController {
return calculatedField ;
}
@ApiOperation ( value = "Get Calculated Fields (getCalculatedFields)" ,
notes = "Returns a page of calculated fields. " + PAGE_DATA_PARAMETERS
)
@PreAuthorize ( "hasAnyAuthority('TENANT_ADMIN')" )
@RequestMapping ( value = "/calculatedFields" , params = { "pageSize" , "page" } , method = RequestMethod . GET )
@ResponseBody
public PageData < CalculatedField > getCalculatedFields (
@Parameter ( description = PAGE_SIZE_DESCRIPTION , required = true )
@RequestParam int pageSize ,
@Parameter ( description = PAGE_NUMBER_DESCRIPTION , required = true )
@RequestParam int page ,
@Parameter ( description = CF_TEXT_SEARCH_DESCRIPTION )
@RequestParam ( required = false ) String textSearch ,
@Parameter ( description = SORT_PROPERTY_DESCRIPTION , schema = @Schema ( allowableValues = { "createdTime" , "name" } ) )
@RequestParam ( required = false ) String sortProperty ,
@Parameter ( description = SORT_ORDER_DESCRIPTION , schema = @Schema ( allowableValues = { "ASC" , "DESC" } ) )
@RequestParam ( required = false ) String sortOrder ) throws ThingsboardException {
PageLink pageLink = createPageLink ( pageSize , page , textSearch , sortProperty , sortOrder ) ;
return checkNotNull ( calculatedFieldService . findAllCalculatedFields ( pageLink ) ) ;
}
@ApiOperation ( value = "Delete Calculated Field (deleteCalculatedField)" ,
notes = "Deletes the calculated field. Referencing non-existing Calculated Field Id will cause an error." + TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH )