From: Dylan William Hardison Date: Mon, 19 Nov 2018 04:39:05 +0000 (-0500) Subject: Bug 1508201 - Create a role that allows Bugzilla::Object-based classes to be stored... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=058169e03c59e84b0ee1e76a9aee814027dc45b6;p=thirdparty%2Fbugzilla.git Bug 1508201 - Create a role that allows Bugzilla::Object-based classes to be stored using Storable --- diff --git a/Bugzilla/Role/Storable.pm b/Bugzilla/Role/Storable.pm new file mode 100644 index 000000000..4e5201702 --- /dev/null +++ b/Bugzilla/Role/Storable.pm @@ -0,0 +1,29 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. + +package Bugzilla::Role::Storable; + +use 5.10.1; +use strict; +use warnings; +use Role::Tiny; + +requires 'flatten_to_hash'; + +sub STORABLE_freeze { + my ($self, $cloning) = @_; + return if $cloning; # Regular default serialization + return '', $self->flatten_to_hash; +} + +sub STORABLE_thaw { + my ($self, $cloning, $serialized, $frozen) = @_; + return if $cloning; + %$self = %$frozen; +} + +1; diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index afd310eb0..b15cad396 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -129,7 +129,7 @@ use constant VALIDATOR_DEPENDENCIES => { use constant EXTRA_REQUIRED_FIELDS => qw(is_enabled); -with 'Bugzilla::Elastic::Role::Object'; +with 'Bugzilla::Elastic::Role::Object', 'Bugzilla::Role::Storable'; sub ES_INDEX { my ($class) = @_; @@ -232,6 +232,7 @@ sub es_document { return $doc; } + ################################################################################ # Functions ################################################################################