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

package pb;

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

// 线路相关服务
service NSRouteService {
	// 创建自定义线路
	rpc createNSRoute (CreateNSRouteRequest) returns (CreateNSRouteResponse);

	// 修改自定义线路
	rpc updateNSRoute (UpdateNSRouteRequest) returns (RPCSuccess);

	// 删除自定义线路
	rpc deleteNSRoute (DeleteNSRouteRequest) returns (RPCSuccess);

	// 获取单个自定义路线信息
	rpc findNSRoute (FindNSRouteRequest) returns (FindNSRouteResponse);

	// 查询自定义线路数量
	rpc countAllNSRoutes(CountAllNSRoutesRequest) returns (RPCCountResponse);

	// 读取所有自定义线路
	rpc findAllNSRoutes (FindAllNSRoutesRequest) returns (FindAllNSRoutesResponse);

	// 读取所有公用的自定义线路
	// 目前只允许读取系统管理员设置的公用自定义线路
	rpc findAllPublicNSRoutes (FindAllPublicRoutesRequest) returns (FindAllPublicRoutesResponse);

	// 设置自定义线路排序
	rpc updateNSRouteOrders (UpdateNSRouteOrdersRequest) returns (RPCSuccess);

	// 根据版本列出一组自定义线路
	rpc listNSRoutesAfterVersion (ListNSRoutesAfterVersionRequest) returns (ListNSRoutesAfterVersionResponse);

	// 查找默认的世界区域线路
	rpc findAllDefaultWorldRegionRoutes(FindAllDefaultWorldRegionRoutesRequest) returns (FindAllDefaultWorldRegionRoutesResponse);

	// 查找默认的中国省份线路
	rpc findAllDefaultChinaProvinceRoutes(FindAllDefaultChinaProvinceRoutesRequest) returns (FindAllDefaultChinaProvinceRoutesResponse);

	// 查找默认的ISP线路
	rpc findAllDefaultISPRoutes(FindAllDefaultISPRoutesRequest) returns (FindAllDefaultISPRoutesResponse);

	// 查找默认的搜索引擎线路
	rpc findAllAgentNSRoutes(FindAllAgentNSRoutesRequest) returns (FindAllAgentNSRoutesResponse);
}

// 创建自定义线路
message CreateNSRouteRequest {
	int64 nsClusterId = 1;
	int64 nsDomainId = 2;
	int64 userId = 3;
	string name = 4;
	bytes rangesJSON = 5;
	bool isPublic = 6; // 是否公用
	int64 nsRouteCategoryId = 7; // 分类ID
	int32 priority = 8; // 优先级
}

message CreateNSRouteResponse {
	int64 nsRouteId = 1;
}

// 修改自定义线路
message UpdateNSRouteRequest {
	int64 nsRouteId = 1;
	string name = 2;
	bytes rangesJSON = 3;
	bool isPublic = 4; // 是否公用
	int64 nsRouteCategoryId = 5; // 分类ID
	int32 priority = 7; // 优先级
	bool isOn = 6;
}

// 删除自定义线路
message DeleteNSRouteRequest {
	int64 nsRouteId = 1;
}

// 获取单个自定义路线信息
message FindNSRouteRequest {
	int64 nsRouteId = 1;
}

message FindNSRouteResponse {
	NSRoute nsRoute = 1;
}

// 查询自定义线路数量
message CountAllNSRoutesRequest {
	int64 nsClusterId = 1;
	int64 nsDomainId = 2;
	int64 userId = 3;
}

// 读取所有自定义线路
message FindAllNSRoutesRequest {
	int64 nsClusterId = 1; // 集群ID
	int64 nsDomainId = 2; // 域名ID
	int64 userId = 3; // 用户ID
	int64 nsRouteCategoryId = 4; // 线路分类ID
}

message FindAllNSRoutesResponse {
	repeated NSRoute nsRoutes = 1;
}

// 读取所有公用的自定义线路
message FindAllPublicRoutesRequest {

}

message FindAllPublicRoutesResponse {
	repeated NSRoute nsRoutes = 1;
}

// 设置自定义线路排序
message UpdateNSRouteOrdersRequest {
	repeated int64 nsRouteIds = 1;
}

// 根据版本列出一组自定义线路
message ListNSRoutesAfterVersionRequest {
	int64 version = 1;
	int64 size = 2;
}

message ListNSRoutesAfterVersionResponse {
	repeated NSRoute nsRoutes = 1;
}

// 查找默认的世界区域线路
message FindAllDefaultWorldRegionRoutesRequest {

}

message FindAllDefaultWorldRegionRoutesResponse {
	repeated NSRoute nsRoutes = 1;
}

// 查找默认的中国省份线路
message FindAllDefaultChinaProvinceRoutesRequest {

}

message FindAllDefaultChinaProvinceRoutesResponse {
	repeated NSRoute nsRoutes = 1;
}

// 查找默认的ISP线路
message FindAllDefaultISPRoutesRequest {

}

message FindAllDefaultISPRoutesResponse {
	repeated NSRoute nsRoutes = 1;
}

// 查找默认的搜索引擎线路
message FindAllAgentNSRoutesRequest {

}

message FindAllAgentNSRoutesResponse{
	repeated NSRoute nsRoutes = 1;
}