make update_tracks create & update tracks

This commit is contained in:
Tangent 2019-06-27 19:44:22 -07:00
parent db60d9c4b8
commit 50dbfd50ed

View File

@ -13,38 +13,37 @@ process_tags = (tags_str) ->
return " #{table.concat taglist, " "} "
update_track = (user_input) ->
if track = Tracks\find id: tonumber @params.id
updates = {}
-- automatic tags
for field in *{"artist", "mood", "link", "genre"}
if user_input[field] and #user_input[field] > 0 -- NOTE includes fix
if user_input.tags
user_input.tags ..= " #{field}:#{user_input[field]\gsub "%s*", "_"}" -- NOTE fix!
updates = {}
-- automatic tags
for field in *{"artist", "mood", "link", "genre"}
if user_input[field] and #user_input[field] > 0 -- NOTE includes fix
if user_input.tags
user_input.tags ..= " #{field}:#{user_input[field]\gsub "%s+", "_"}"
else
user_input.tags = "#{field}:#{user_input[field]\gsub "%s+", "_"}"
-- update all fields
for field in pairs Tracks.fields
if user_input[field]
switch field
when "status"
updates.status = Tracks.statuses\for_db user_input.status
when "quality"
updates.quality = Tracks.qualities\for_db user_input.quality
when "tags"
updates.tags = process_tags user_input.tags
when "id"
nil -- IDs cannot be modified
else
user_input.tags = "#{field}:#{user_input[field]\gsub "%s*", "_"}"
-- update all fields
for field in pairs Tracks.fields
if user_input[field]
switch field
when "status"
updates.status = Tracks.statuses\for_db user_input.status
when "quality"
updates.quality = Tracks.qualities\for_db user_input.quality
when "tags"
updates.tags = process_tags user_input.tags
when "id"
nil -- IDs cannot be modified
else
updates[field] = trim user_input[field]
track\update updates
updates[field] = trim user_input[field]
create_track = (user_input) ->
if track = Tracks\create({})
user_input.id = track.id
update_track user_input
if user_input.id
if track = Tracks\find id: tonumber user_input.id
return track\update updates
else
return Tracks\create updates
return {
:process_tags
:update_track
:create_track
create_track: update_track
}