gitextract_4eff3cym/ ├── .codeclimate.yml ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── question.md │ ├── dependabot.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── go.yml │ ├── typos.yml │ ├── website-prod.yml │ └── website-stage.yml ├── .gitignore ├── .golangci.yml ├── .ls-lint.yml ├── .qlty/ │ ├── .gitignore │ ├── configs/ │ │ ├── .hadolint.yaml │ │ └── .yamllint.yaml │ └── qlty.toml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── SECURITY.md ├── docs/ │ ├── Dockerfile │ ├── advanced-guide/ │ │ ├── authentication/ │ │ │ └── page.md │ │ ├── building-cli-applications/ │ │ │ └── page.md │ │ ├── circuit-breaker/ │ │ │ └── page.md │ │ ├── custom-spans-in-tracing/ │ │ │ └── page.md │ │ ├── dealing-with-sql/ │ │ │ └── page.md │ │ ├── debugging/ │ │ │ └── page.md │ │ ├── gofr-errors/ │ │ │ └── page.md │ │ ├── graphql/ │ │ │ └── page.md │ │ ├── grpc/ │ │ │ └── page.md │ │ ├── grpc-streaming/ │ │ │ └── page.md │ │ ├── handling-data-migrations/ │ │ │ └── page.md │ │ ├── handling-file/ │ │ │ └── page.md │ │ ├── http-communication/ │ │ │ └── page.md │ │ ├── injecting-databases-drivers/ │ │ │ └── page.md │ │ ├── key-value-store/ │ │ │ └── page.md │ │ ├── middlewares/ │ │ │ └── page.md │ │ ├── monitoring-service-health/ │ │ │ └── page.md │ │ ├── overriding-default/ │ │ │ └── page.md │ │ ├── publishing-custom-metrics/ │ │ │ └── page.md │ │ ├── rbac/ │ │ │ └── page.md │ │ ├── remote-log-level-change/ │ │ │ └── page.md │ │ ├── serving-static-files/ │ │ │ └── page.md │ │ ├── setting-custom-response-headers/ │ │ │ └── page.md │ │ ├── startup-hooks/ │ │ │ └── page.md │ │ ├── swagger-documentation/ │ │ │ └── page.md │ │ ├── using-cron/ │ │ │ └── page.md │ │ ├── using-publisher-subscriber/ │ │ │ └── page.md │ │ └── websocket/ │ │ └── page.md │ ├── datasources/ │ │ ├── arangodb/ │ │ │ └── page.md │ │ ├── cassandra/ │ │ │ └── page.md │ │ ├── clickhouse/ │ │ │ └── page.md │ │ ├── cockroachdb/ │ │ │ └── page.md │ │ ├── couchbase/ │ │ │ └── page.md │ │ ├── dgraph/ │ │ │ └── page.md │ │ ├── elasticsearch/ │ │ │ └── page.md │ │ ├── getting-started/ │ │ │ └── page.md │ │ ├── influxdb/ │ │ │ └── page.md │ │ ├── migrations/ │ │ │ └── elasticsearch/ │ │ │ └── page.md │ │ ├── mongodb/ │ │ │ └── page.md │ │ ├── opentsdb/ │ │ │ └── page.md │ │ ├── oracle/ │ │ │ └── page.md │ │ ├── scylladb/ │ │ │ └── page.md │ │ ├── solr/ │ │ │ └── page.md │ │ └── surrealdb/ │ │ └── page.md │ ├── events.json │ ├── navigation.js │ ├── page.md │ ├── quick-start/ │ │ ├── add-rest-handlers/ │ │ │ └── page.md │ │ ├── cli/ │ │ │ └── page.md │ │ ├── configuration/ │ │ │ └── page.md │ │ ├── connecting-mysql/ │ │ │ └── page.md │ │ ├── connecting-redis/ │ │ │ └── page.md │ │ ├── introduction/ │ │ │ └── page.md │ │ └── observability/ │ │ └── page.md │ ├── references/ │ │ ├── configs/ │ │ │ └── page.md │ │ ├── context/ │ │ │ └── page.md │ │ ├── gofrcli/ │ │ │ └── page.md │ │ └── testing/ │ │ └── page.md │ └── testimonials.json ├── examples/ │ ├── grpc/ │ │ ├── grpc-streaming-client/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ ├── chat.pb.go │ │ │ │ ├── chat.proto │ │ │ │ ├── chat_grpc.pb.go │ │ │ │ ├── chatservice_client.go │ │ │ │ └── health_client.go │ │ │ └── main.go │ │ ├── grpc-streaming-server/ │ │ │ ├── README.md │ │ │ ├── main.go │ │ │ ├── main_test.go │ │ │ └── server/ │ │ │ ├── chat.pb.go │ │ │ ├── chat.proto │ │ │ ├── chat_grpc.pb.go │ │ │ ├── chatservice_gofr.go │ │ │ ├── chatservice_server.go │ │ │ ├── health_gofr.go │ │ │ └── request_gofr.go │ │ ├── grpc-unary-client/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ ├── health_client.go │ │ │ │ ├── health_test.go │ │ │ │ ├── hello.pb.go │ │ │ │ ├── hello.proto │ │ │ │ ├── hello_client.go │ │ │ │ ├── hello_grpc.pb.go │ │ │ │ └── hello_test.go │ │ │ ├── main.go │ │ │ └── main_test.go │ │ └── grpc-unary-server/ │ │ ├── README.md │ │ ├── main.go │ │ ├── main_test.go │ │ └── server/ │ │ ├── health_gofr.go │ │ ├── health_test.go │ │ ├── hello.pb.go │ │ ├── hello.proto │ │ ├── hello_gofr.go │ │ ├── hello_grpc.pb.go │ │ ├── hello_server.go │ │ ├── hello_server_test.go │ │ ├── hello_test.go │ │ ├── request_gofr.go │ │ └── request_test.go │ ├── http-server/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── docker/ │ │ │ ├── docker-compose.yaml │ │ │ ├── prometheus/ │ │ │ │ └── prometheus.yml │ │ │ └── provisioning/ │ │ │ ├── dashboards/ │ │ │ │ ├── dashboards.yaml │ │ │ │ └── gofr-dashboard/ │ │ │ │ └── dashboards.json │ │ │ └── datasources/ │ │ │ └── datasource.yaml │ │ ├── main.go │ │ ├── main_test.go │ │ └── static/ │ │ └── openapi.json │ ├── http-server-using-redis/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── main.go │ │ └── main_test.go │ ├── sample-cmd/ │ │ ├── README.md │ │ ├── configs/ │ │ │ └── .test.env │ │ ├── main.go │ │ └── main_test.go │ ├── using-add-filestore/ │ │ ├── README.md │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ └── main_test.go │ ├── using-add-rest-handlers/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── main.go │ │ ├── main_test.go │ │ └── migrations/ │ │ ├── 1721816030_create_user_table.go │ │ ├── 1721816030_create_user_table_test.go │ │ ├── all.go │ │ └── all_test.go │ ├── using-cron-jobs/ │ │ ├── Readme.md │ │ ├── main.go │ │ └── main_test.go │ ├── using-custom-metrics/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── main.go │ │ └── main_test.go │ ├── using-file-bind/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── main.go │ │ └── main_test.go │ ├── using-graphql/ │ │ ├── configs/ │ │ │ └── schema.graphqls │ │ ├── main.go │ │ ├── main_test.go │ │ └── migrations/ │ │ ├── 20240205125300_create_users_table.go │ │ └── all.go │ ├── using-html-template/ │ │ ├── README.md │ │ ├── main.go │ │ ├── main_test.go │ │ ├── static/ │ │ │ ├── 404.html │ │ │ ├── index.html │ │ │ └── style.css │ │ └── templates/ │ │ └── todo.html │ ├── using-http-auth-middleware/ │ │ ├── ReadMe.md │ │ ├── main.go │ │ └── main_test.go │ ├── using-http-service/ │ │ ├── Dockerfile │ │ ├── main.go │ │ ├── main_test.go │ │ └── readme.md │ ├── using-migrations/ │ │ ├── Dockerfile │ │ ├── go.sum │ │ ├── main.go │ │ ├── main_test.go │ │ ├── migrations/ │ │ │ ├── 1722507126_create_employee_table.go │ │ │ ├── 1722507126_create_employee_table_test.go │ │ │ ├── 1722507180_redis_add_employee_name.go │ │ │ ├── 1722507180_redis_add_employee_name_test.go │ │ │ ├── all.go │ │ │ └── all_test.go │ │ └── readme.md │ ├── using-publisher/ │ │ ├── Dockerfile │ │ ├── main.go │ │ ├── main_test.go │ │ ├── migrations/ │ │ │ ├── 1721801313_create_topics.go │ │ │ ├── 1721801313_create_topics_test.go │ │ │ ├── all.go │ │ │ └── all_test.go │ │ └── readme.md │ ├── using-subscriber/ │ │ ├── Dockerfile │ │ ├── main.go │ │ ├── main_test.go │ │ ├── migrations/ │ │ │ ├── 1721800255_create_topics.go │ │ │ ├── 1721800255_create_topics_test.go │ │ │ ├── all.go │ │ │ └── all_test.go │ │ └── readme.md │ └── using-web-socket/ │ ├── Readme.md │ ├── main.go │ └── main_test.go ├── go.mod ├── go.sum ├── go.work ├── go.work.sum ├── pkg/ │ └── gofr/ │ ├── auth.go │ ├── cmd/ │ │ ├── request.go │ │ ├── request_test.go │ │ ├── responder.go │ │ ├── responder_test.go │ │ └── terminal/ │ │ ├── colors.go │ │ ├── output.go │ │ ├── output_test.go │ │ ├── printers.go │ │ ├── printers_test.go │ │ ├── progress.go │ │ ├── progress_test.go │ │ ├── spinner.go │ │ └── spinner_test.go │ ├── cmd.go │ ├── cmd_test.go │ ├── config/ │ │ ├── config.go │ │ ├── godotenv.go │ │ ├── godotenv_test.go │ │ ├── mock_config.go │ │ └── mock_config_test.go │ ├── constants.go │ ├── container/ │ │ ├── container.go │ │ ├── container_test.go │ │ ├── datasources.go │ │ ├── health.go │ │ ├── health_test.go │ │ ├── metrics.go │ │ ├── mock_container.go │ │ ├── mock_datasources.go │ │ ├── mock_logger.go │ │ ├── mock_metrics.go │ │ ├── mockcontainer_test.go │ │ └── sql_mock.go │ ├── context.go │ ├── context_test.go │ ├── cron.go │ ├── cron_scheduler.go │ ├── cron_test.go │ ├── crud_handlers.go │ ├── crud_handlers_test.go │ ├── crud_helpers.go │ ├── datasource/ │ │ ├── README.md │ │ ├── arangodb/ │ │ │ ├── arango.go │ │ │ ├── arango_db.go │ │ │ ├── arango_db_test.go │ │ │ ├── arango_document.go │ │ │ ├── arango_document_test.go │ │ │ ├── arango_graph.go │ │ │ ├── arango_graph_test.go │ │ │ ├── arango_helper.go │ │ │ ├── arango_helper_test.go │ │ │ ├── arango_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interface.go │ │ │ ├── logger.go │ │ │ ├── logger_test.go │ │ │ ├── metrics.go │ │ │ ├── mock_collection.go │ │ │ ├── mock_database.go │ │ │ ├── mock_graph.go │ │ │ ├── mock_interfaces.go │ │ │ ├── mock_logger.go │ │ │ ├── mock_metrics.go │ │ │ └── mock_user.go │ │ ├── cassandra/ │ │ │ ├── cassandra.go │ │ │ ├── cassandra_batch.go │ │ │ ├── cassandra_batch_test.go │ │ │ ├── cassandra_test.go │ │ │ ├── errors.go │ │ │ ├── errors_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interfaces.go │ │ │ ├── internal.go │ │ │ ├── logger.go │ │ │ ├── logger_test.go │ │ │ ├── metrics.go │ │ │ ├── mock_interfaces.go │ │ │ ├── mock_logger.go │ │ │ └── mock_metrics.go │ │ ├── clickhouse/ │ │ │ ├── clickhouse.go │ │ │ ├── clickhouse_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interface.go │ │ │ ├── logger.go │ │ │ ├── logger_test.go │ │ │ ├── metrics.go │ │ │ ├── mock_interface.go │ │ │ ├── mock_logger.go │ │ │ └── mock_metrics.go │ │ ├── couchbase/ │ │ │ ├── couchbase.go │ │ │ ├── couchbase_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interfaces.go │ │ │ ├── logger.go │ │ │ ├── metrics.go │ │ │ ├── mock_interfaces.go │ │ │ ├── mock_logger.go │ │ │ ├── mock_metrics.go │ │ │ └── wrappers.go │ │ ├── datasource.go │ │ ├── dbresolver/ │ │ │ ├── circuit_breaker.go │ │ │ ├── factory.go │ │ │ ├── factory_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── logger.go │ │ │ ├── metrics.go │ │ │ ├── mock_db.go │ │ │ ├── mock_logger.go │ │ │ ├── mock_metrics.go │ │ │ ├── mock_strategy.go │ │ │ ├── options.go │ │ │ ├── resolver.go │ │ │ ├── resolver_test.go │ │ │ ├── strategy.go │ │ │ └── strategy_test.go │ │ ├── dgraph/ │ │ │ ├── dgraph.go │ │ │ ├── dgraph_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interfaces.go │ │ │ ├── logger.go │ │ │ ├── logger_test.go │ │ │ ├── metrics.go │ │ │ ├── mock_interfaces.go │ │ │ ├── mock_logger.go │ │ │ └── mock_metrics.go │ │ ├── elasticsearch/ │ │ │ ├── documents.go │ │ │ ├── elasticsearch.go │ │ │ ├── elasticsearch_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── logger.go │ │ │ ├── metrics.go │ │ │ ├── mock_logger.go │ │ │ └── mock_metrics.go │ │ ├── errors.go │ │ ├── errors_test.go │ │ ├── file/ │ │ │ ├── azure/ │ │ │ │ ├── fs.go │ │ │ │ ├── fs_test.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── storage_adapter.go │ │ │ │ └── storage_adapter_test.go │ │ │ ├── common_file.go │ │ │ ├── common_file_test.go │ │ │ ├── common_fs.go │ │ │ ├── common_fs_signedurl_test.go │ │ │ ├── common_fs_test.go │ │ │ ├── ftp/ │ │ │ │ ├── fs.go │ │ │ │ ├── fs_test.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── storage_adapter.go │ │ │ │ └── storage_adapter_test.go │ │ │ ├── gcs/ │ │ │ │ ├── fs.go │ │ │ │ ├── fs_test.go │ │ │ │ ├── gcs_cloud_test.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── storage_adapter.go │ │ │ │ └── storage_adapter_test.go │ │ │ ├── helper.go │ │ │ ├── interface.go │ │ │ ├── local_fs.go │ │ │ ├── local_fs_test.go │ │ │ ├── logger.go │ │ │ ├── mock_interface.go │ │ │ ├── observability.go │ │ │ ├── row_reader.go │ │ │ ├── row_reader_test.go │ │ │ ├── s3/ │ │ │ │ ├── file.go │ │ │ │ ├── file_parse.go │ │ │ │ ├── file_test.go │ │ │ │ ├── fs.go │ │ │ │ ├── fs_dir.go │ │ │ │ ├── fs_test.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── interface.go │ │ │ │ ├── logger.go │ │ │ │ ├── logger_test.go │ │ │ │ └── mock_interface.go │ │ │ └── sftp/ │ │ │ ├── file.go │ │ │ ├── fs.go │ │ │ ├── fs_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interface.go │ │ │ ├── logger.go │ │ │ ├── logger_test.go │ │ │ └── mock_interface.go │ │ ├── health.go │ │ ├── influxdb/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── influxdb.go │ │ │ ├── influxdb_test.go │ │ │ ├── interface.go │ │ │ ├── internal.go │ │ │ ├── logger.go │ │ │ ├── metrics.go │ │ │ ├── metrics_logger.go │ │ │ ├── mock_interface.go │ │ │ └── mock_logger.go │ │ ├── interface.go │ │ ├── kv-store/ │ │ │ ├── badger/ │ │ │ │ ├── badger.go │ │ │ │ ├── badger_test.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── logger.go │ │ │ │ ├── logger_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── mock_logger.go │ │ │ │ └── mock_metrics.go │ │ │ ├── dynamodb/ │ │ │ │ ├── dynamo.go │ │ │ │ ├── dynamo_test.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── logger.go │ │ │ │ ├── metrics.go │ │ │ │ ├── mock_dynamodb.go │ │ │ │ ├── mock_logger.go │ │ │ │ └── mock_metrics.go │ │ │ └── nats/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interface.go │ │ │ ├── logger.go │ │ │ ├── metrics.go │ │ │ ├── mock_interface.go │ │ │ ├── mock_logger.go │ │ │ ├── mock_metrics.go │ │ │ ├── nats.go │ │ │ └── nats_test.go │ │ ├── logger.go │ │ ├── mongo/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── logger.go │ │ │ ├── logger_test.go │ │ │ ├── metrics.go │ │ │ ├── mock_logger.go │ │ │ ├── mock_metrics.go │ │ │ ├── mongo.go │ │ │ └── mongo_test.go │ │ ├── opentsdb/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interface.go │ │ │ ├── mock_interface.go │ │ │ ├── observability.go │ │ │ ├── opentsdb.go │ │ │ ├── opentsdb_test.go │ │ │ ├── preprocess.go │ │ │ └── response.go │ │ ├── oracle/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interface.go │ │ │ ├── logger.go │ │ │ ├── logger_test.go │ │ │ ├── metrics.go │ │ │ ├── mock_interface.go │ │ │ ├── mock_logger.go │ │ │ ├── mock_metrics.go │ │ │ ├── oracle.go │ │ │ └── oracle_test.go │ │ ├── pubsub/ │ │ │ ├── eventhub/ │ │ │ │ ├── eventhub.go │ │ │ │ ├── eventhub_test.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── helper.go │ │ │ │ ├── helper_test.go │ │ │ │ ├── logger.go │ │ │ │ ├── logger_test.go │ │ │ │ ├── message.go │ │ │ │ ├── metrics.go │ │ │ │ ├── mock_logger.go │ │ │ │ └── mock_metrics.go │ │ │ ├── google/ │ │ │ │ ├── google.go │ │ │ │ ├── google_test.go │ │ │ │ ├── health.go │ │ │ │ ├── helper.go │ │ │ │ ├── interfaces.go │ │ │ │ ├── message.go │ │ │ │ ├── message_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── mock_interfaces.go │ │ │ │ ├── mock_metrics.go │ │ │ │ ├── tracing.go │ │ │ │ └── tracing_test.go │ │ │ ├── interface.go │ │ │ ├── kafka/ │ │ │ │ ├── conn.go │ │ │ │ ├── errors.go │ │ │ │ ├── health.go │ │ │ │ ├── health_test.go │ │ │ │ ├── helper.go │ │ │ │ ├── interfaces.go │ │ │ │ ├── kafka.go │ │ │ │ ├── kafka_sasl.go │ │ │ │ ├── kafka_sasl_test.go │ │ │ │ ├── kafka_test.go │ │ │ │ ├── message.go │ │ │ │ ├── message_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── mock_interfaces.go │ │ │ │ ├── mock_metrics.go │ │ │ │ ├── tls.go │ │ │ │ ├── tls_test.go │ │ │ │ ├── tracing.go │ │ │ │ └── tracing_test.go │ │ │ ├── log.go │ │ │ ├── message.go │ │ │ ├── message_test.go │ │ │ ├── mqtt/ │ │ │ │ ├── default_client.go │ │ │ │ ├── helper.go │ │ │ │ ├── interface.go │ │ │ │ ├── message.go │ │ │ │ ├── message_test.go │ │ │ │ ├── mock_client.go │ │ │ │ ├── mock_interfaces.go │ │ │ │ ├── mock_token.go │ │ │ │ ├── mqtt.go │ │ │ │ └── mqtt_test.go │ │ │ ├── nats/ │ │ │ │ ├── client.go │ │ │ │ ├── client_helper.go │ │ │ │ ├── client_test.go │ │ │ │ ├── committer.go │ │ │ │ ├── committer_test.go │ │ │ │ ├── config.go │ │ │ │ ├── connection_manager.go │ │ │ │ ├── connection_manager_test.go │ │ │ │ ├── connectors.go │ │ │ │ ├── connectors_test.go │ │ │ │ ├── errors.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── health.go │ │ │ │ ├── health_test.go │ │ │ │ ├── interfaces.go │ │ │ │ ├── message.go │ │ │ │ ├── message_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── mock_client.go │ │ │ │ ├── mock_jetstream.go │ │ │ │ ├── mock_metrics.go │ │ │ │ ├── mock_tracer.go │ │ │ │ ├── pubsub_wrapper.go │ │ │ │ ├── stream_manager.go │ │ │ │ ├── stream_manager_test.go │ │ │ │ ├── subscription_manager.go │ │ │ │ ├── subscription_manager_test.go │ │ │ │ ├── tracing.go │ │ │ │ ├── tracing_test.go │ │ │ │ └── wrapper_test.go │ │ │ └── sqs/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── health.go │ │ │ ├── health_test.go │ │ │ ├── interfaces.go │ │ │ ├── message.go │ │ │ ├── message_test.go │ │ │ ├── mock_client.go │ │ │ ├── sqs.go │ │ │ ├── sqs_test.go │ │ │ ├── tracing.go │ │ │ └── tracing_test.go │ │ ├── redis/ │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── health.go │ │ │ ├── health_test.go │ │ │ ├── hook.go │ │ │ ├── hook_test.go │ │ │ ├── messages.go │ │ │ ├── messages_test.go │ │ │ ├── metrics.go │ │ │ ├── mock_metrics.go │ │ │ ├── pubsub.go │ │ │ ├── pubsub_test.go │ │ │ ├── redis.go │ │ │ └── redis_test.go │ │ ├── scylladb/ │ │ │ ├── errors.go │ │ │ ├── errors_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interface.go │ │ │ ├── internal.go │ │ │ ├── logger.go │ │ │ ├── logger_test.go │ │ │ ├── mock_interface.go │ │ │ ├── mock_logger.go │ │ │ ├── scylladb.go │ │ │ └── scylladb_test.go │ │ ├── solr/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── logger.go │ │ │ ├── metrics.go │ │ │ ├── mock_logger.go │ │ │ ├── mock_metrics.go │ │ │ ├── solr.go │ │ │ └── solr_test.go │ │ ├── sql/ │ │ │ ├── bind.go │ │ │ ├── bind_test.go │ │ │ ├── db.go │ │ │ ├── db_test.go │ │ │ ├── health.go │ │ │ ├── health_test.go │ │ │ ├── metrics.go │ │ │ ├── mock_metrics.go │ │ │ ├── query_builder.go │ │ │ ├── query_builder_test.go │ │ │ ├── sql.go │ │ │ ├── sql_mock.go │ │ │ ├── sql_test.go │ │ │ ├── supabase.go │ │ │ └── supabase_test.go │ │ └── surrealdb/ │ │ ├── go.mod │ │ ├── go.sum │ │ ├── interface.go │ │ ├── mock_interface.go │ │ ├── surrealdb.go │ │ ├── surrealdb_test.go │ │ ├── utils.go │ │ └── wrapper.go │ ├── default.go │ ├── exporter.go │ ├── exporter_test.go │ ├── external_db.go │ ├── external_db_test.go │ ├── factory.go │ ├── file/ │ │ ├── file.go │ │ ├── file_test.go │ │ ├── zip.go │ │ └── zip_test.go │ ├── gofr.go │ ├── gofr_test.go │ ├── graphql.go │ ├── graphql_test.go │ ├── grpc/ │ │ ├── log.go │ │ ├── log_test.go │ │ ├── middleware/ │ │ │ ├── apikey_auth.go │ │ │ ├── auth_test.go │ │ │ ├── basic_auth.go │ │ │ ├── common.go │ │ │ ├── oauth.go │ │ │ └── oauth_integration_test.go │ │ ├── rate_limiter.go │ │ └── rate_limiter_test.go │ ├── grpc.go │ ├── grpc_test.go │ ├── handler.go │ ├── handler_test.go │ ├── http/ │ │ ├── errors.go │ │ ├── errors_test.go │ │ ├── form_data_binder.go │ │ ├── form_data_binder_test.go │ │ ├── metrics.go │ │ ├── middleware/ │ │ │ ├── apikey_auth.go │ │ │ ├── apikey_auth_test.go │ │ │ ├── auth.go │ │ │ ├── auth_test.go │ │ │ ├── basic_auth.go │ │ │ ├── basic_auth_test.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── cors.go │ │ │ ├── cors_test.go │ │ │ ├── errors.go │ │ │ ├── errors_test.go │ │ │ ├── logger.go │ │ │ ├── logger_test.go │ │ │ ├── metrics.go │ │ │ ├── metrics_test.go │ │ │ ├── oauth.go │ │ │ ├── oauth_test.go │ │ │ ├── rate_limiter.go │ │ │ ├── rate_limiter_store.go │ │ │ ├── rate_limiter_test.go │ │ │ ├── tracer.go │ │ │ ├── tracer_test.go │ │ │ ├── validate.go │ │ │ ├── validate_test.go │ │ │ ├── web_socket.go │ │ │ └── web_socket_test.go │ │ ├── multipart_file_bind.go │ │ ├── multipart_file_bind_test.go │ │ ├── request.go │ │ ├── request_test.go │ │ ├── responder.go │ │ ├── responder_test.go │ │ ├── response/ │ │ │ ├── file.go │ │ │ ├── raw.go │ │ │ ├── redirect.go │ │ │ ├── response.go │ │ │ ├── template.go │ │ │ └── xml.go │ │ ├── router.go │ │ └── router_test.go │ ├── http_server.go │ ├── http_server_test.go │ ├── logging/ │ │ ├── ctx_logger.go │ │ ├── ctx_logger_test.go │ │ ├── level.go │ │ ├── level_test.go │ │ ├── logger.go │ │ ├── logger_test.go │ │ ├── mock_logger.go │ │ ├── mock_logger_test.go │ │ └── remotelogger/ │ │ ├── dynamic_level_logger.go │ │ ├── dynamic_level_logger_test.go │ │ └── mock_buffer_logger.go │ ├── metrics/ │ │ ├── errors.go │ │ ├── exporters/ │ │ │ ├── exporter.go │ │ │ ├── telemetry.go │ │ │ └── telemetry_test.go │ │ ├── handler.go │ │ ├── handler_test.go │ │ ├── register.go │ │ ├── register_test.go │ │ ├── store.go │ │ └── store_test.go │ ├── metrics_server.go │ ├── migration/ │ │ ├── arango.go │ │ ├── arango_test.go │ │ ├── cassandra.go │ │ ├── cassandra_test.go │ │ ├── clickhouse.go │ │ ├── clickhouse_test.go │ │ ├── datasource.go │ │ ├── datasource_test.go │ │ ├── dgraph.go │ │ ├── dgraph_test.go │ │ ├── elasticsearch.go │ │ ├── elasticsearch_test.go │ │ ├── interface.go │ │ ├── logger.go │ │ ├── migration.go │ │ ├── migration_test.go │ │ ├── mock_interface.go │ │ ├── mongo.go │ │ ├── mongo_test.go │ │ ├── opentsdb.go │ │ ├── opentsdb_test.go │ │ ├── oracle.go │ │ ├── oracle_test.go │ │ ├── pubsub.go │ │ ├── pubsub_test.go │ │ ├── redis.go │ │ ├── redis_test.go │ │ ├── scylla_db.go │ │ ├── scylla_db_test.go │ │ ├── sql.go │ │ ├── sql_test.go │ │ ├── surreal_db.go │ │ └── surreal_db_test.go │ ├── otel.go │ ├── otel_test.go │ ├── rbac/ │ │ ├── config.go │ │ ├── config_test.go │ │ ├── endpoint_matcher.go │ │ ├── endpoint_matcher_test.go │ │ ├── middleware.go │ │ └── middleware_test.go │ ├── rbac.go │ ├── rbac_test.go │ ├── request.go │ ├── responder.go │ ├── rest.go │ ├── run.go │ ├── service/ │ │ ├── apikey_auth.go │ │ ├── apikey_auth_test.go │ │ ├── auth.go │ │ ├── auth_test.go │ │ ├── basic_auth.go │ │ ├── basic_auth_test.go │ │ ├── circuit_breaker.go │ │ ├── circuit_breaker_test.go │ │ ├── connection_pool.go │ │ ├── connection_pool_test.go │ │ ├── custom_header.go │ │ ├── custom_header_test.go │ │ ├── errors.go │ │ ├── errors_test.go │ │ ├── health.go │ │ ├── health_config.go │ │ ├── health_config_test.go │ │ ├── health_test.go │ │ ├── logger.go │ │ ├── logger_test.go │ │ ├── metrics.go │ │ ├── mock_http_service.go │ │ ├── mock_metrics.go │ │ ├── mock_oauth_server.go │ │ ├── new.go │ │ ├── new_test.go │ │ ├── oauth.go │ │ ├── oauth_test.go │ │ ├── options.go │ │ ├── rate_limiter.go │ │ ├── rate_limiter_config.go │ │ ├── rate_limiter_config_test.go │ │ ├── rate_limiter_store.go │ │ ├── rate_limiter_store_test.go │ │ ├── rate_limiter_test.go │ │ ├── response.go │ │ ├── response_test.go │ │ ├── retry.go │ │ └── retry_test.go │ ├── shutdown.go │ ├── shutdown_test.go │ ├── static/ │ │ ├── files.go │ │ ├── index.css │ │ ├── index.html │ │ ├── oauth2-redirect.html │ │ ├── swagger-ui-bundle.js │ │ ├── swagger-ui-standalone-preset.js │ │ ├── swagger-ui.css │ │ └── swagger-ui.js │ ├── subscriber.go │ ├── subscriber_test.go │ ├── swagger.go │ ├── swagger_test.go │ ├── telemetry.go │ ├── testutil/ │ │ ├── error.go │ │ ├── error_test.go │ │ ├── os.go │ │ ├── os_test.go │ │ ├── port.go │ │ └── port_test.go │ ├── version/ │ │ └── version.go │ ├── websocket/ │ │ ├── interfaces.go │ │ ├── mock_interfaces.go │ │ ├── options.go │ │ ├── websocket.go │ │ └── websocket_test.go │ ├── websocket.go │ └── websocket_test.go └── typos.toml