From 80099b60e1fc436569f33cb38ab6608ef163478c Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Thu, 12 Feb 2015 16:39:38 +0200 Subject: model: allow arbitrary encoding for back-end data --- aconf/model/field.lua | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'aconf/model/field.lua') diff --git a/aconf/model/field.lua b/aconf/model/field.lua index ca6bc1d..f5382c4 100644 --- a/aconf/model/field.lua +++ b/aconf/model/field.lua @@ -1,5 +1,5 @@ --[[ -Copyright (c) 2012-2014 Kaarle Ritvanen +Copyright (c) 2012-2015 Kaarle Ritvanen See LICENSE file for license details --]] @@ -174,7 +174,12 @@ function M.Field:_compute(context) return self.compute(context.parent, context.txn) end -function M.Field:_load(context) return context.txn:get(context.addr) end +function M.Field:_load(context) + local value = context.txn:get(context.addr) + if value ~= nil then return self:decode(context, value) end +end + +function M.Field:decode(context, value) return value end function M.Field:_validate(context, value) if value == nil then @@ -220,7 +225,12 @@ function M.Field:save(context, value) else self:_save(context, self:_validate(context, value)) end end -function M.Field:_save(context, value) context.txn:set(context.addr, value) end +function M.Field:_save(context, value) + if value ~= nil then value = self:encode(context, value) end + context.txn:set(context.addr, value) +end + +function M.Field:encode(context, value) return value end function M.Field:validate_saved(context) if self:_editable(context) then self:save(context, self:load(context)) end -- cgit v1.2.3