1 /*
2  * Hunt - A redis client library for D programming language.
3  *
4  * Copyright (C) 2018-2019 HuntLabs
5  *
6  * Website: https://www.huntlabs.net/
7  *
8  * Licensed under the Apache-2.0 License.
9  *
10  */
11  
12 module hunt.redis.util.Slowlog;
13 
14 import hunt.redis.util.SafeEncoder;
15 
16 import hunt.collection.ArrayList;
17 import hunt.collection.List;
18 import hunt.Long;
19 import hunt.util.StringBuilder;
20 
21 /**
22  * 
23  */
24 class Slowlog {
25     private long id;
26     private long timeStamp;
27     private long executionTime;
28     private List!(string) args;
29     private enum string COMMA = ",";
30 
31     private this(List!(Object) properties) {
32         this.id = (cast(Long) properties.get(0)).value();
33         this.timeStamp = (cast(Long) properties.get(1)).value();
34         this.executionTime = (cast(Long) properties.get(2)).value();
35 
36         List!(string) bargs = cast(List!(string)) properties.get(3);
37         this.args = new ArrayList!(string)(bargs.size());
38 
39         foreach (string barg; bargs) {
40             this.args.add(barg);
41         }
42     }
43 
44     static List!(Slowlog) from(List!(Object) nestedMultiBulkReply) {
45         List!(Slowlog) logs = new ArrayList!(Slowlog)(nestedMultiBulkReply.size());
46         foreach (Object obj; nestedMultiBulkReply) {
47             List!(Object) properties = cast(List!(Object)) obj;
48             logs.add(new Slowlog(properties));
49         }
50 
51         return logs;
52     }
53 
54     long getId() {
55         return id;
56     }
57 
58     long getTimeStamp() {
59         return timeStamp;
60     }
61 
62     long getExecutionTime() {
63         return executionTime;
64     }
65 
66     List!(string) getArgs() {
67         return args;
68     }
69 
70     override string toString() {
71         return new StringBuilder().append(id).append(COMMA).append(timeStamp)
72             .append(COMMA).append(executionTime).append(COMMA)
73             .append((cast(Object) args).toString()).toString();
74     }
75 }