|
@@ -2,6 +2,7 @@ package ticket
|
|
|
|
|
|
import (
|
|
|
"github.com/ClickHouse/clickhouse-go/v2/lib/driver"
|
|
|
+ "github.com/kelindar/bitmap"
|
|
|
"google.golang.org/protobuf/types/known/timestamppb"
|
|
|
"time"
|
|
|
)
|
|
@@ -52,3 +53,35 @@ func (x *Message) Scan(row driver.Rows) error {
|
|
|
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+func (x *Message) SetFlags(flags ...MessageFlag) {
|
|
|
+ mask := bitmap.FromBytes(x.Flags)
|
|
|
+ for i := range flags {
|
|
|
+ if MessageFlag_unknown_message_flag == flags[i] {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ mask.Set(uint32(flags[i]))
|
|
|
+ }
|
|
|
+
|
|
|
+ x.Flags = mask.ToBytes()
|
|
|
+}
|
|
|
+
|
|
|
+func (x *Message) RemoveFlags(flags ...MessageFlag) {
|
|
|
+ mask := bitmap.FromBytes(x.Flags)
|
|
|
+ for i := range flags {
|
|
|
+ if MessageFlag_unknown_message_flag == flags[i] {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ mask.Remove(uint32(flags[i]))
|
|
|
+ }
|
|
|
+
|
|
|
+ x.Flags = mask.ToBytes()
|
|
|
+}
|
|
|
+
|
|
|
+func (x *Message) HasFlag(flag MessageFlag) bool {
|
|
|
+ return bitmap.
|
|
|
+ FromBytes(x.Flags).
|
|
|
+ Contains(uint32(flag))
|
|
|
+}
|