@@ -496,6 +496,37 @@ private extension RedisDriver {
496496 _ operation: RedisOperation ,
497497 connection conn: RedisConnection ,
498498 startTime: Date
499+ ) async throws -> QueryResult {
500+ switch operation {
501+ case . get, . set, . del, . keys, . scan, . type, . ttl, . pttl, . expire, . persist, . rename, . exists:
502+ return try await executeKeyOperation ( operation, connection: conn, startTime: startTime)
503+
504+ case . hget, . hset, . hgetall, . hdel:
505+ return try await executeHashOperation ( operation, connection: conn, startTime: startTime)
506+
507+ case . lrange, . lpush, . rpush, . llen:
508+ return try await executeListOperation ( operation, connection: conn, startTime: startTime)
509+
510+ case . smembers, . sadd, . srem, . scard:
511+ return try await executeSetOperation ( operation, connection: conn, startTime: startTime)
512+
513+ case . zrange, . zadd, . zrem, . zcard:
514+ return try await executeSortedSetOperation ( operation, connection: conn, startTime: startTime)
515+
516+ case . xrange, . xlen:
517+ return try await executeStreamOperation ( operation, connection: conn, startTime: startTime)
518+
519+ case . ping, . info, . dbsize, . flushdb, . select, . configGet, . configSet, . command, . multi, . exec, . discard:
520+ return try await executeServerOperation ( operation, connection: conn, startTime: startTime)
521+ }
522+ }
523+
524+ // MARK: - Key Operations
525+
526+ func executeKeyOperation(
527+ _ operation: RedisOperation ,
528+ connection conn: RedisConnection ,
529+ startTime: Date
499530 ) async throws -> QueryResult {
500531 switch operation {
501532 case . get( let key) :
@@ -612,6 +643,19 @@ private extension RedisDriver {
612643 error: nil
613644 )
614645
646+ default :
647+ fatalError ( " Unexpected operation in executeKeyOperation " )
648+ }
649+ }
650+
651+ // MARK: - Hash Operations
652+
653+ func executeHashOperation(
654+ _ operation: RedisOperation ,
655+ connection conn: RedisConnection ,
656+ startTime: Date
657+ ) async throws -> QueryResult {
658+ switch operation {
615659 case . hget( let key, let field) :
616660 let result = try await conn. executeCommand ( [ " HGET " , key, field] )
617661 let value = result . stringValue
@@ -657,6 +701,19 @@ private extension RedisDriver {
657701 error: nil
658702 )
659703
704+ default :
705+ fatalError ( " Unexpected operation in executeHashOperation " )
706+ }
707+ }
708+
709+ // MARK: - List Operations
710+
711+ func executeListOperation(
712+ _ operation: RedisOperation ,
713+ connection conn: RedisConnection ,
714+ startTime: Date
715+ ) async throws -> QueryResult {
716+ switch operation {
660717 case . lrange( let key, let start, let stop) :
661718 let result = try await conn. executeCommand ( [ " LRANGE " , key, String ( start) , String ( stop) ] )
662719 return buildListResult ( result, startTime: startTime)
@@ -699,6 +756,19 @@ private extension RedisDriver {
699756 error: nil
700757 )
701758
759+ default :
760+ fatalError ( " Unexpected operation in executeListOperation " )
761+ }
762+ }
763+
764+ // MARK: - Set Operations
765+
766+ func executeSetOperation(
767+ _ operation: RedisOperation ,
768+ connection conn: RedisConnection ,
769+ startTime: Date
770+ ) async throws -> QueryResult {
771+ switch operation {
702772 case . smembers( let key) :
703773 let result = try await conn. executeCommand ( [ " SMEMBERS " , key] )
704774 return buildSetResult ( result, startTime: startTime)
@@ -741,6 +811,19 @@ private extension RedisDriver {
741811 error: nil
742812 )
743813
814+ default :
815+ fatalError ( " Unexpected operation in executeSetOperation " )
816+ }
817+ }
818+
819+ // MARK: - Sorted Set Operations
820+
821+ func executeSortedSetOperation(
822+ _ operation: RedisOperation ,
823+ connection conn: RedisConnection ,
824+ startTime: Date
825+ ) async throws -> QueryResult {
826+ switch operation {
744827 case . zrange( let key, let start, let stop, let withScores) :
745828 var args = [ " ZRANGE " , key, String ( start) , String ( stop) ]
746829 if withScores { args. append ( " WITHSCORES " ) }
@@ -788,6 +871,19 @@ private extension RedisDriver {
788871 error: nil
789872 )
790873
874+ default :
875+ fatalError ( " Unexpected operation in executeSortedSetOperation " )
876+ }
877+ }
878+
879+ // MARK: - Stream Operations
880+
881+ func executeStreamOperation(
882+ _ operation: RedisOperation ,
883+ connection conn: RedisConnection ,
884+ startTime: Date
885+ ) async throws -> QueryResult {
886+ switch operation {
791887 case . xrange( let key, let start, let end, let count) :
792888 var args = [ " XRANGE " , key, start, end]
793889 if let c = count { args += [ " COUNT " , String ( c) ] }
@@ -806,6 +902,19 @@ private extension RedisDriver {
806902 error: nil
807903 )
808904
905+ default :
906+ fatalError ( " Unexpected operation in executeStreamOperation " )
907+ }
908+ }
909+
910+ // MARK: - Server Operations
911+
912+ func executeServerOperation(
913+ _ operation: RedisOperation ,
914+ connection conn: RedisConnection ,
915+ startTime: Date
916+ ) async throws -> QueryResult {
917+ switch operation {
809918 case . ping:
810919 _ = try await conn. executeCommand ( [ " PING " ] )
811920 return QueryResult (
@@ -874,6 +983,9 @@ private extension RedisDriver {
874983 case . discard:
875984 _ = try await conn. executeCommand ( [ " DISCARD " ] )
876985 return buildStatusResult ( " OK " , startTime: startTime)
986+
987+ default :
988+ fatalError ( " Unexpected operation in executeServerOperation " )
877989 }
878990 }
879991}
0 commit comments