syntax = "proto3";
option go_package = "./pb";

package pb;

import "models/rpc_messages.proto";
import "models/model_node_region.proto";

// 节点区域相关服务
service NodeRegionService {
	// 创建区域
	rpc createNodeRegion (CreateNodeRegionRequest) returns (CreateNodeRegionResponse);

	// 修改区域
	rpc updateNodeRegion (UpdateNodeRegionRequest) returns (RPCSuccess);

	// 删除区域
	rpc deleteNodeRegion (DeleteNodeRegionRequest) returns (RPCSuccess);

	// 查找所有区域
	rpc findAllEnabledNodeRegions (FindAllEnabledNodeRegionsRequest) returns (FindAllEnabledNodeRegionsResponse);

	// 查找所有启用的区域
	rpc findAllAvailableNodeRegions (FindAllAvailableNodeRegionsRequest) returns (FindAllAvailableNodeRegionsResponse);

	// 排序
	rpc updateNodeRegionOrders (UpdateNodeRegionOrdersRequest) returns (RPCSuccess);

	// 查找单个区域信息
	rpc findEnabledNodeRegion (FindEnabledNodeRegionRequest) returns (FindEnabledNodeRegionResponse);

	// 修改价格项价格
	rpc updateNodeRegionPrice (UpdateNodeRegionPriceRequest) returns (RPCSuccess);
}

// 创建区域
message CreateNodeRegionRequest {
	string name = 1;
	string description = 2;
}

message CreateNodeRegionResponse {
	int64 nodeRegionId = 1;
}

// 修改区域
message UpdateNodeRegionRequest {
	int64 nodeRegionId = 1;
	string name = 2;
	string description = 3;
	bool isOn = 4;
}

// 删除区域
message DeleteNodeRegionRequest {
	int64 nodeRegionId = 1;
}

// 查找所有区域
message FindAllEnabledNodeRegionsRequest {

}

message FindAllEnabledNodeRegionsResponse {
	repeated NodeRegion nodeRegions = 1;
}

// 查找所有启用的区域
message FindAllAvailableNodeRegionsRequest {

}

message FindAllAvailableNodeRegionsResponse {
	repeated NodeRegion nodeRegions = 1;
}

// 排序
message UpdateNodeRegionOrdersRequest {
	repeated int64 nodeRegionIds = 1;
}

// 查找单个区域信息
message FindEnabledNodeRegionRequest {
	int64 nodeRegionId = 1;
}

message FindEnabledNodeRegionResponse {
	NodeRegion nodeRegion = 1;
}

// 修改价格项价格
message UpdateNodeRegionPriceRequest {
	int64 nodeRegionId = 1;
	int64 nodeItemId = 2;
	float price = 3;
}