worryg0d commented on code in PR #1796:
URL: 
https://github.com/apache/cassandra-gocql-driver/pull/1796#discussion_r1715018420


##########
session.go:
##########
@@ -780,6 +780,87 @@ func (s *Session) MapExecuteBatchCAS(batch *Batch, dest 
map[string]interface{})
        return applied, iter, iter.err
 }
 
+// connectionType is a custom type that represents the different stages
+// of a client connection in a Cassandra cluster. It is used to filter and 
categorize
+// connections based on their current state.
+type connectionType string
+
+const (
+       Ready      connectionType = "ready"
+       Connecting connectionType = "connecting"
+       Idle       connectionType = "idle"
+       Closed     connectionType = "closed"
+       Failed     connectionType = "failed"
+)
+
+// ClientConnection represents a client connection to a Cassandra node. It 
holds detailed
+// information about the connection, including the client address, connection 
stage, driver details,
+// and various configuration options.
+type ClientConnection struct {
+       Address         string  `json:"address"`
+       Port            int     `json:"port"`
+       ConnectionStage string  `json:"connection_stage"`
+       DriverName      string  `json:"driver_name"`
+       DriverVersion   string  `json:"driver_version"`
+       Hostname        string  `json:"hostname"`
+       KeyspaceName    *string `json:"keyspace_name"`
+       ProtocolVersion int     `json:"protocol_version"`
+       RequestCount    int     `json:"request_count"`
+       SSLCipherSuite  *string `json:"ssl_cipher_suite"`
+       SSLEnabled      bool    `json:"ssl_enabled"`
+       SSLProtocol     *string `json:"ssl_protocol"`
+       Username        string  `json:"username"`
+}

Review Comment:
   Are these json tags really necessary?



##########
session.go:
##########
@@ -780,6 +780,87 @@ func (s *Session) MapExecuteBatchCAS(batch *Batch, dest 
map[string]interface{})
        return applied, iter, iter.err
 }
 
+// connectionType is a custom type that represents the different stages
+// of a client connection in a Cassandra cluster. It is used to filter and 
categorize
+// connections based on their current state.
+type connectionType string
+
+const (
+       Ready      connectionType = "ready"
+       Connecting connectionType = "connecting"
+       Idle       connectionType = "idle"
+       Closed     connectionType = "closed"
+       Failed     connectionType = "failed"
+)
+
+// ClientConnection represents a client connection to a Cassandra node. It 
holds detailed
+// information about the connection, including the client address, connection 
stage, driver details,
+// and various configuration options.
+type ClientConnection struct {
+       Address         string  `json:"address"`
+       Port            int     `json:"port"`
+       ConnectionStage string  `json:"connection_stage"`
+       DriverName      string  `json:"driver_name"`
+       DriverVersion   string  `json:"driver_version"`
+       Hostname        string  `json:"hostname"`
+       KeyspaceName    *string `json:"keyspace_name"`
+       ProtocolVersion int     `json:"protocol_version"`
+       RequestCount    int     `json:"request_count"`
+       SSLCipherSuite  *string `json:"ssl_cipher_suite"`
+       SSLEnabled      bool    `json:"ssl_enabled"`
+       SSLProtocol     *string `json:"ssl_protocol"`
+       Username        string  `json:"username"`
+}
+
+// RetrieveClientConnections retrieves a list of client connections from the
+// `system_views.clients` table based on the specified connection type. The 
function
+// queries the Cassandra database for connections with a given 
`connection_stage` and
+// scans the results into a slice of `ClientConnection` structs. It handles 
nullable
+// fields and returns the list of connections or an error if the operation 
fails.
+func (s *Session) RetrieveClientConnections(connectionType connectionType) 
([]*ClientConnection, error) {
+       query := "SELECT address, port, connection_stage, driver_name, 
driver_version, hostname, keyspace_name, protocol_version, request_count, 
ssl_cipher_suite, ssl_enabled, ssl_protocol, username FROM system_views.clients 
WHERE connection_stage = ?"

Review Comment:
   I think we should follow the general pattern of code styling for similar 
methods that are used for querying some system/system_views tables. So you 
should define this query as a string const and use idents as well. You may find 
some examples in the `Session.KeyspaceMetadata()` method



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to