before_filter :authorize
def read_one
- pref = UserPreference.find(:first, :conditions => ['user_id = ? AND k = ?', @user.id, params[:preference_key]])
+ pref = UserPreference.find(@user.id, params[:preference_key])
if pref
render :text => pref.v.to_s
end
def update_one
- pref = UserPreference.find(:first, :conditions => ['user_id = ? AND k = ?', @user.id, params[:preference_key]])
-
- if pref
+ begin
+ pref = UserPreference.find(@user.id, params[:preference_key])
pref.v = request.raw_post.chomp
pref.save
- else
+ rescue ActiveRecord::RecordNotFound
pref = UserPreference.new
pref.user = @user
pref.k = params[:preference_key]
pref.v = request.raw_post.chomp
pref.save
end
+
+ render :nothing => true
end
+ def delete_one
+ UserPreference.delete(@user.id, params[:preference_key])
+
+ render :nothing => true
+ end
# print out all the preferences as a big xml block
def read
render :nothing => true
end
-
end
class UserPreference < ActiveRecord::Base
+ set_primary_keys :user_id, :k
belongs_to :user
# Turn this Node in to an XML Node without the <osm> wrapper.
map.connect "api/#{API_VERSION}/user/preferences/:preference_key", :controller => 'user_preference', :action => 'read_one', :conditions => { :method => :get }
map.connect "api/#{API_VERSION}/user/preferences", :controller => 'user_preference', :action => 'update', :conditions => { :method => :put }
map.connect "api/#{API_VERSION}/user/preferences/:preference_key", :controller => 'user_preference', :action => 'update_one', :conditions => { :method => :put }
+ map.connect "api/#{API_VERSION}/user/preferences/:preference_key", :controller => 'user_preference', :action => 'delete_one', :conditions => { :method => :delete }
map.connect "api/#{API_VERSION}/user/gpx_files", :controller => 'user', :action => 'api_gpx_files'
map.connect "api/#{API_VERSION}/gpx/create", :controller => 'trace', :action => 'api_create'
+++ /dev/null
-class AddUserPreferenceId < ActiveRecord::Migration
- def self.up
- remove_primary_key 'user_preferences'
- add_column "user_preferences", "id", :bigint, :limit => 64, :null => false
- add_primary_key "user_preferences", ["id"]
- change_column "user_preferences", "id", :bigint, :limit => 64, :null => false, :options => "AUTO_INCREMENT"
- add_index "user_preferences", ["id"], :name => "user_preferences_id_idx"
- end
-
- def self.down
- remove_index 'user_preferences', 'id'
- remove_column 'user_preferences', 'id'
- end
-end