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

package pb;

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

// DNS服务商相关服务
service DNSProviderService {
	// 创建服务商
	rpc createDNSProvider (CreateDNSProviderRequest) returns (CreateDNSProviderResponse);

	// 修改服务商
	rpc updateDNSProvider (UpdateDNSProviderRequest) returns (RPCSuccess);

	// 计算服务商数量
	rpc countAllEnabledDNSProviders (CountAllEnabledDNSProvidersRequest) returns (RPCCountResponse);

	// 列出单页服务商信息
	rpc listEnabledDNSProviders (ListEnabledDNSProvidersRequest) returns (ListEnabledDNSProvidersResponse);

	// 查找所有的DNS服务商
	rpc findAllEnabledDNSProviders (FindAllEnabledDNSProvidersRequest) returns (FindAllEnabledDNSProvidersResponse);

	// 删除服务商
	rpc deleteDNSProvider (DeleteDNSProviderRequest) returns (RPCSuccess);

	// 查找单个服务商
	rpc findEnabledDNSProvider (FindEnabledDNSProviderRequest) returns (FindEnabledDNSProviderResponse);

	// 取得所有服务商类型
	rpc findAllDNSProviderTypes (FindAllDNSProviderTypesRequest) returns (FindAllDNSProviderTypesResponse);

	// 取得某个类型的所有服务商
	rpc findAllEnabledDNSProvidersWithType (FindAllEnabledDNSProvidersWithTypeRequest) returns (FindAllEnabledDNSProvidersWithTypeResponse);
}

// 创建服务商
message CreateDNSProviderRequest {
	string name = 1;
	string type = 2;
	bytes apiParamsJSON = 3;
}

message CreateDNSProviderResponse {
	int64 dnsProviderId = 1;
}

// 修改服务商
message UpdateDNSProviderRequest {
	int64 dnsProviderId = 1;
	string name = 2;
	bytes apiParamsJSON = 3;
}

// 计算服务商数量
message CountAllEnabledDNSProvidersRequest {
	int64 adminId = 1;
	int64 userId = 2;
	string keyword = 3;
	string domain = 4;
	string type = 5;
}

// 列出单页的服务商信息
message ListEnabledDNSProvidersRequest {
	int64 adminId = 1;
	int64 userId = 2;
	string keyword = 5;
	string domain = 6;
	string type = 7;
	int64 offset = 3;
	int64 size = 4;
}

message ListEnabledDNSProvidersResponse {
	repeated DNSProvider dnsProviders = 1;
}

// 查找所有的DNS服务商
message FindAllEnabledDNSProvidersRequest {
	int64 adminId = 1;
	int64 userId = 2;
}

message FindAllEnabledDNSProvidersResponse {
	repeated DNSProvider dnsProviders = 1;
}

// 删除服务商
message DeleteDNSProviderRequest {
	int64 dnsProviderId = 1;
}

// 查找单个服务商
message FindEnabledDNSProviderRequest {
	int64 dnsProviderId = 1; // DNS服务商ID
	bool maskParams = 2; // 是否对参数中的密钥进行掩码
}

message FindEnabledDNSProviderResponse {
	DNSProvider dnsProvider = 1; // DNS服务商信息
}

// 取得所有服务商类型
message FindAllDNSProviderTypesRequest {

}

message FindAllDNSProviderTypesResponse {
	repeated DNSProviderType providerTypes = 1;
}

message DNSProviderType {
	string name = 1;
	string code = 2;
	string description = 3;
}

// 取得某个类型的所有服务商
message FindAllEnabledDNSProvidersWithTypeRequest {
	string providerTypeCode = 1;
}

message FindAllEnabledDNSProvidersWithTypeResponse {
	repeated DNSProvider dnsProviders = 1;
}