local typedefs = require "kong.db.schema.typedefs"

return {
    name = "investibook-sse-limit",
    fields = {
        {consumer = typedefs.no_consumer},
        {protocols = typedefs.protocols_http},
        {
            config = {
                type = "record",
                fields = {
                    {user_concurrency = {type = "integer", required = true, gt = 0}},
                    {org_concurrency = {type = "integer", required = true, gt = 0}},
                    {global_concurrency = {type = "integer", required = true, gt = 0}},
                    {connections_per_minute = {type = "integer", required = true, gt = 0}},
                    {lease_ttl_seconds = {type = "integer", default = 900, gt = 0}},
                    {retry_after_seconds = {type = "integer", default = 5, gt = 0}},
                    {key_prefix = {type = "string", default = "investibook:sse"}},
                    {identity_header_name = typedefs.header_name({required = false})},
                    {org_header_name = typedefs.header_name({required = false})},
                    {fault_tolerant = {type = "boolean", default = false}},
                    {redis_host = typedefs.host({required = true})},
                    {redis_port = typedefs.port({default = 6379})},
                    {redis_password = {type = "string", len_min = 0}},
                    {redis_username = {type = "string"}},
                    {redis_database = {type = "integer", default = 0}},
                    {redis_ssl = {type = "boolean", default = false}},
                    {redis_ssl_verify = {type = "boolean", default = false}},
                    {redis_timeout = {type = "number", default = 2000, gt = 0}}
                }
            }
        }
    }
}
