@@ -276,7 +276,7 @@ namespace cpp_redis {
276276 return client_->decr (std::forward<std::string>(key));
277277 }
278278
279- virtual int decr_increment (std::string&& key,int increment)
279+ int decr_increment (std::string&& key,int increment)
280280 {
281281 static_assert (is_sting_, " This API Support String Request" );
282282 if (client_ == nullptr || key.empty ()) {
@@ -367,52 +367,77 @@ namespace cpp_redis {
367367 std::forward<std::string>(append_value));
368368 }
369369
370- std::tuple<bool , int > list_rpush (std::string&& key, std::string&& value)
370+ template <typename T>
371+ int list_rpush (std::string&& key, T&& value)
371372 {
372373 static_assert (is_list_, " This API Support List Request" );
373374
374- if (client_ == nullptr ||
375- key.empty () || value.empty ()) {
376- return { false ,-1 };
375+ if (client_ == nullptr || key.empty ()) {
376+ return 0 ;
377+ }
378+
379+ any_type_to_string (value);
380+
381+ if (keys_.empty ()){
382+ return 0 ;
377383 }
378384
379- return client_->list_rpush (std::forward<std::string>(key), std::forward<std::string>(value ));
385+ return client_->list_rpush (std::forward<std::string>(key),std::move (keys_[ 0 ] ));
380386 }
381387
382- std::tuple<bool , int > list_rpush_if (std::string&& key, std::string&& value)
388+ template <typename T>
389+ int list_rpush_if (std::string&& key,T&& value)
383390 {
384391 static_assert (is_list_, " This API Support List Request" );
385392
386- if (client_ == nullptr ||
387- key.empty () || value.empty ) {
388- return { false ,-1 };
393+ if (client_ == nullptr || key.empty ()) {
394+ return 0 ;
389395 }
390396
391- return client_->list_rpush_if (std::forward<std::string>(key), std::forward<std::string>(value));
397+ any_type_to_string (value);
398+
399+ if (keys_.empty ()) {
400+ return 0 ;
401+ }
402+
403+ return client_->list_rpush_if (std::forward<std::string>(key),std::move (keys_[0 ]));
392404 }
393405
394- std::tuple<bool , int > list_lpush (std::string&& key, std::string&& value)
406+ template <typename T>
407+ int list_lpush (std::string&& key,T&& value)
395408 {
396409 static_assert (is_list_, " This API Support List Request" );
397410
398- if (client_ == nullptr ||
399- key.empty () || value.empty ()) {
400- return { false ,-1 };
411+ if (client_ == nullptr || key.empty ()) {
412+ return 0 ;
401413 }
402414
403- return client_->list_lpush (std::forward<std::string>(key), std::forward<std::string>(value));
415+ any_type_to_string (value);
416+
417+ if (keys_.empty ()) {
418+ return 0 ;
419+ }
420+
421+ return client_->list_lpush (std::forward<std::string>(key), std::move (keys_[0 ]));
404422 }
405423
406- std::tuple<bool , int > list_lpush_if (std::string&& key, std::string&& value)
424+ template <typename T>
425+ int list_lpush_if (std::string&& key,T&& value)
407426 {
408427 static_assert (is_list_, " This API Support List Request" );
409428
410- if (client_ == nullptr ||
411- key.empty () || value.empty ()) {
412- return { false ,-1 };
429+ if (client_ == nullptr || key.empty ()) {
430+ return 0 ;
431+ }
432+
433+ any_type_to_string (value);
434+
435+ if (keys_.empty ()) {
436+ return 0 ;
413437 }
414438
415- return client_->list_lpush_if (std::forward<std::string>(key), std::forward<std::string>(value));
439+
440+ return client_->list_lpush_if (std::forward<std::string>(key),std::move (keys_[0 ]));
416441 }
417442
418443 int32_t list_size (std::string&& key)
@@ -503,33 +528,45 @@ namespace cpp_redis {
503528 return client_->list_index (std::forward<std::string>(key), index);
504529 }
505530
506- bool list_set (std::string&& key, std::string&& value, int index)
531+ template <typename T>
532+ bool list_set (std::string&& key, T&& value, int index)
507533 {
508534 static_assert (is_list_, " This API Support List Request" );
509535
510536 if (client_ == nullptr || key.empty ()) {
511537 return false ;
512538 }
513539
540+ any_type_to_string (value);
541+ if (keys_.empty ()){
542+ return false ;
543+ }
544+
514545 return client_->list_set (std::forward<std::string>(key),
515- std::forward<std::string>(value ),unit::int_to_string (index));
546+ std::move (keys_[ 0 ] ),unit::int_to_string (index));
516547 }
517548
518549
519550 // 没有移除就为0 ,有移除就大于0,count表示list的起始位置,一般从0开始删除,-1表示最后一个元素删除
520551 // 如果从0开始删除,有多少删除多少
521552 // 如果从-1开始删除,就只会删除一个元素
522553 // 数量为>=|count|
523- std::tuple<bool , int > list_del_elem (std::string&& key, std::string&& value, int count = 0 )
554+ template <typename T>
555+ int list_del_elem (std::string&& key,T&& value, int count = 0 )
524556 {
525557 static_assert (is_list_, " This API Support List Request" );
526558
527559 if (client_ == nullptr || key.empty ()) {
528- return { false ,-1 };
560+ return 0 ;
561+ }
562+
563+ any_type_to_string (value);
564+ if (keys_.empty ()) {
565+ return 0 ;
529566 }
530567
531- return client_->list_del_elem (std::forward<std::string>(key),
532- std::forward<std::string>(value), unit::int_to_string (count));
568+ return client_->list_del_elem (std::forward<std::string>(key),std::move (keys_[ 0 ]),
569+ unit::int_to_string (count));
533570 }
534571
535572 std::string list_rpoplpush (std::string&& src_key, std::string&& dst_key)
@@ -556,28 +593,43 @@ namespace cpp_redis {
556593 return client_->list_brpoplpush (std::forward<std::string>(src_key), std::forward<std::string>(dst_key), timeout);
557594 }
558595
559- int list_insert_before (std::string&& key, std::string&& dst_value, std::string&& insert_value)
596+ template <typename T1, typename T2>
597+ int list_insert_before (std::string&& key,T1&& dst_value, T2&& insert_value)
560598 {
561599 static_assert (is_list_, " This API Support List Request" );
562600
563601 if (client_ == nullptr || key.empty ()) {
564- return -1 ;
602+ return 0 ;
603+ }
604+
605+
606+ any_type_to_string (dst_value);
607+ any_type_to_string (insert_value);
608+
609+ if (keys_.empty () || keys_.size () < 2 ) {
610+ return 0 ;
565611 }
566612
567- return client_->list_insert_before (std::forward<std::string>(key),
568- std::forward<std::string>(dst_value), std::forward<std::string>(insert_value));
613+ return client_->list_insert_before (std::forward<std::string>(key), std::move (keys_[0 ]), std::move (keys_[1 ]));
569614 }
570615
571- int list_insert_after (std::string&& key, std::string&& dst_value, std::string&& insert_value)
616+ template <typename T1,typename T2>
617+ int list_insert_after (std::string&& key,T1&& dst_value,T2&& insert_value)
572618 {
573619 static_assert (is_list_, " This API Support List Request" );
574620
575621 if (client_== nullptr || key.empty ()) {
576- return -1 ;
622+ return 0 ;
623+ }
624+
625+ any_type_to_string (dst_value);
626+ any_type_to_string (insert_value);
627+
628+ if (keys_.empty () || keys_.size ()<2 ){
629+ return 0 ;
577630 }
578631
579- return client_->list_insert_after (std::forward<std::string>(key),
580- std::forward<std::string>(dst_value), std::forward<std::string>(insert_value));
632+ return client_->list_insert_after (std::forward<std::string>(key),std::move (keys_[0 ]),std::move (keys_[1 ]));
581633 }
582634
583635 template <typename ...Args>
@@ -1121,7 +1173,7 @@ namespace cpp_redis {
11211173 }
11221174
11231175 keys_.push_back (std::forward<std::string>(key));
1124- hash_make_keys (std::forward<Args>(fields)...);
1176+ any_type_to_string (std::forward<Args>(fields)...);
11251177 if ( keys_.empty () || keys_.size () != Size){
11261178 return -1 ;
11271179 }
@@ -1199,7 +1251,7 @@ namespace cpp_redis {
11991251 }
12001252
12011253 keys_.push_back (std::forward<std::string>(key));
1202- hash_make_keys (std::forward<Args>(keys)...);
1254+ any_type_to_string (std::forward<Args>(keys)...);
12031255
12041256 if (keys_.size () != Size) {
12051257 return false ;
@@ -1218,7 +1270,7 @@ namespace cpp_redis {
12181270 }
12191271
12201272 keys_.push_back (std::forward<std::string>(key));
1221- hash_make_keys (std::forward<Args>(keys)...);
1273+ any_type_to_string (std::forward<Args>(keys)...);
12221274
12231275 if (keys_.size () != Size) {
12241276 return { {} };
@@ -1260,25 +1312,25 @@ namespace cpp_redis {
12601312 return client_->hash_get_all (std::forward<std::string>(key));
12611313 }
12621314 private:
1263- void hash_make_keys ()
1315+ void any_type_to_string ()
12641316 {
12651317
12661318 }
12671319
12681320 template <typename T, typename ...Args>
1269- void hash_make_keys (T&& header, Args&&...args)
1321+ void any_type_to_string (T&& header, Args&&...args)
12701322 {
12711323 std::string value;
12721324#if (_MSC_VER >= 1700 && _MSC_VER <= 1900) // vs2012-vs2015
12731325#else
1274- if constexpr (std::is_same<T, bool >::value){
1326+ if constexpr (std::is_same<typename std::decay< decltype (header)>::type, bool >::value){
12751327 value = header ? " true" : " false" ;
12761328 }else {
12771329 value = to_string (header);
12781330 }
12791331#endif
12801332 keys_.push_back (std::move (value));
1281- hash_make_keys (std::forward<Args>(args)...);
1333+ any_type_to_string (std::forward<Args>(args)...);
12821334
12831335 }
12841336
0 commit comments