Class: Gitlab::Database::ShaAttribute
- Inherits:
-
BINARY_TYPE
- Object
- Gitlab::Database::ShaAttribute
- Defined in:
- lib/gitlab/database/sha_attribute.rb
Overview
Class for casting binary data to hexadecimal SHA1 hashes (and vice-versa).
Using ShaAttribute allows you to store SHA1 values as binary while still using them as if they were stored as string values. This gives you the ease of use of string values, but without the storage overhead.
Constant Summary collapse
- PACK_FORMAT =
'H*'
Class Method Summary collapse
-
.serialize(value) ⇒ Object
Casts a SHA1 in hexadecimal to the proper binary format.
Instance Method Summary collapse
-
#deserialize(value) ⇒ Object
Casts binary data to a SHA1 in hexadecimal.
-
#serialize(value) ⇒ Object
Casts a SHA1 in hexadecimal to the proper binary format.
Class Method Details
.serialize(value) ⇒ Object
Casts a SHA1 in hexadecimal to the proper binary format.
31 32 33 34 35 |
# File 'lib/gitlab/database/sha_attribute.rb', line 31 def self.serialize(value) arg = value ? [value].pack(PACK_FORMAT) : nil BINARY_TYPE.new.serialize(arg) end |
Instance Method Details
#deserialize(value) ⇒ Object
Casts binary data to a SHA1 in hexadecimal.
18 19 20 21 |
# File 'lib/gitlab/database/sha_attribute.rb', line 18 def deserialize(value) value = super(value) value ? value.unpack1(PACK_FORMAT) : nil end |
#serialize(value) ⇒ Object
Casts a SHA1 in hexadecimal to the proper binary format.
24 25 26 27 28 |
# File 'lib/gitlab/database/sha_attribute.rb', line 24 def serialize(value) arg = value ? [value].pack(PACK_FORMAT) : nil BINARY_TYPE.new.serialize(arg) end |