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

package pb;

import "models/model_node_value.proto";
import "models/model_ns_user_plan.proto";

// 域名服务
service NSService {
	// 组合看板数据
	rpc composeNSBoard (ComposeNSBoardRequest) returns (ComposeNSBoardResponse);

	// 组合用户看板数据
	rpc composeNSUserBoard(ComposeNSUserBoardRequest) returns (ComposeNSUserBoardResponse);
}

// 组合看板数据
message ComposeNSBoardRequest {

}

message ComposeNSBoardResponse {
	int64 countNSDomains = 1;
	int64 countNSRecords = 2;
	int64 countNSClusters = 3;
	int64 countNSNodes = 4;
	int64 countOfflineNSNodes = 5;

	repeated DailyTrafficStat dailyTrafficStats = 30;
	repeated HourlyTrafficStat hourlyTrafficStats = 31;
	repeated NodeStat topNSNodeStats = 32;
	repeated DomainStat topNSDomainStats = 33;
	repeated NodeValue cpuNodeValues = 34;
	repeated NodeValue memoryNodeValues = 35;
	repeated NodeValue loadNodeValues = 36;

	message DailyTrafficStat {
		string day = 1;
		int64 bytes = 2;
		int64 countRequests = 3;
	}

	message HourlyTrafficStat {
		string hour = 1;
		int64 bytes = 2;
		int64 countRequests = 3;
	}

	message NodeStat {
		int64 nsClusterId = 1;
		int64 nsNodeId = 2;
		string nsNodeName = 3;
		int64 countRequests = 4;
		int64 bytes = 5;
	}

	message DomainStat {
		int64 nsDomainId = 1;
		string nsDomainName = 2;
		int64 countRequests = 3;
		int64 bytes = 4;
	}
}

// 组合用户看板数据
message ComposeNSUserBoardRequest {
	int64 userId = 1;
}

message ComposeNSUserBoardResponse {
	int64 countNSDomains = 1;
	int64 countNSRecords = 2;
	int64 countNSRoutes = 3;

	NSUserPlan nsUserPlan = 30;
	repeated DomainStat topNSDomainStats = 31;

	message DomainStat {
		int64 nsDomainId = 1;
		string nsDomainName = 2;
		int64 countRequests = 3;
		int64 bytes = 4;
	}
}