annotate demo-app/app/main/medium/_action/update.lua @ 126:bccaa05aada7
Implemented efficient length operator for sparse JSON arrays (that may contain null values)
 | author | jbe | 
 | date | Sun Jul 27 03:54:39 2014 +0200 (2014-07-27) | 
 | parents | 9fdfb27f8e67 | 
 | children |  | 
 
 | rev | line source | 
| jbe/bsw@0 | 1 local medium | 
| jbe/bsw@0 | 2 local id = param.get_id() | 
| jbe/bsw@0 | 3 if id then | 
| jbe/bsw@0 | 4   medium = Medium:by_id(id) | 
| jbe/bsw@0 | 5 else | 
| jbe/bsw@0 | 6   medium = Medium:new() | 
| jbe/bsw@0 | 7 end | 
| jbe/bsw@0 | 8 | 
| jbe/bsw@0 | 9 if param.get("delete", atom.boolean) then | 
| jbe/bsw@0 | 10   local name = medium.name | 
| jbe/bsw@0 | 11   medium:destroy() | 
| jbe/bsw@0 | 12   slot.put_into("notice", _("Medium '#{name}' deleted", {name = name})) | 
| jbe/bsw@0 | 13   return | 
| jbe/bsw@0 | 14 end | 
| jbe/bsw@0 | 15 | 
| jbe/bsw@0 | 16 param.update(medium, "media_type_id", "name", "copyprotected") | 
| jbe/bsw@0 | 17 | 
| jbe/bsw@0 | 18 medium:save() | 
| jbe/bsw@0 | 19 | 
| jbe/bsw@0 | 20 param.update_relationship{ | 
| jbe/bsw@0 | 21   param_name        = "genres", | 
| jbe/bsw@0 | 22   id                = medium.id, | 
| jbe/bsw@0 | 23   connecting_model  = Classification, | 
| jbe/bsw@0 | 24   own_reference     = "medium_id", | 
| jbe/bsw@0 | 25   foreign_reference = "genre_id" | 
| jbe/bsw@0 | 26 } | 
| jbe/bsw@0 | 27 | 
| jbe/bsw@0 | 28 for index, prefix in param.iterate("tracks") do | 
| jbe/bsw@0 | 29   local id = param.get(prefix .. "id", atom.integer) | 
| jbe/bsw@0 | 30   local track | 
| jbe/bsw@0 | 31   if id then | 
| jbe/bsw@0 | 32     track = Track:by_id(id) | 
| jbe/bsw@0 | 33   elseif #param.get(prefix .. "name") > 0 then | 
| jbe/bsw@0 | 34     track = Track:new() | 
| jbe/bsw@0 | 35     track.medium_id = medium.id | 
| jbe/bsw@0 | 36   else | 
| jbe/bsw@0 | 37     break | 
| jbe/bsw@0 | 38   end | 
| jbe/bsw@0 | 39   track.position    = param.get(prefix .. "position", atom.integer) | 
| jbe/bsw@0 | 40   track.name        = param.get(prefix .. "name") | 
| jbe/bsw@0 | 41   track.description = param.get(prefix .. "description") | 
| jbe/bsw@0 | 42   track.duration    = param.get(prefix .. "duration") | 
| jbe/bsw@0 | 43   track:save() | 
| jbe/bsw@0 | 44 end | 
| jbe/bsw@0 | 45 | 
| jbe/bsw@0 | 46 | 
| jbe/bsw@0 | 47 if id then | 
| jbe/bsw@0 | 48   slot.put_into("notice", _("Medium '#{name}' updated", {name = medium.name})) | 
| jbe/bsw@0 | 49 else | 
| jbe/bsw@0 | 50   slot.put_into("notice", _("Medium '#{name}' created", {name = medium.name})) | 
| jbe/bsw@0 | 51 end |