diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index 013b777..b1ff491 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -2,6 +2,7 @@ class Api::V1::UsersController < Api::V1::ApiController class ForbiddenError < StandardError; end before_action :set, except: ['create', 'check_email', 'check_username'] + before_action :set_by_id, only: ['info', 'update'] def create @user = User.new(user_params) @@ -24,6 +25,15 @@ class Api::V1::UsersController < Api::V1::ApiController end end + + def update + render :info, status: :ok if @user.update(user_params) + end + + def info + render :info, status: :ok + end + def show if @user now = DateTime.current @@ -63,9 +73,6 @@ class Api::V1::UsersController < Api::V1::ApiController render :available end - def update - end - def destroy end @@ -76,7 +83,14 @@ class Api::V1::UsersController < Api::V1::ApiController @user = User.where("username = ?", params[:id]).first end + def set_by_id + @user = User.where("id = ?", params[:id]).first + end + def user_params - params.require(:user).permit(:username, :email, :password, :password_confirmation, :granblue_id) + params.require(:user).permit( + :username, :email, :password, :password_confirmation, + :granblue_id, :picture, :element, :language, :private + ) end end \ No newline at end of file diff --git a/app/views/api/v1/users/base.json.rabl b/app/views/api/v1/users/base.json.rabl index 7308969..2c11719 100644 --- a/app/views/api/v1/users/base.json.rabl +++ b/app/views/api/v1/users/base.json.rabl @@ -2,4 +2,13 @@ object :user attributes :id, :username, - :granblue_id \ No newline at end of file + :granblue_id, + :language, + :private + +node :picture do |u| + { + :picture => u.picture, + :element => u.element + } +end \ No newline at end of file diff --git a/app/views/api/v1/users/info.rabl b/app/views/api/v1/users/info.rabl new file mode 100644 index 0000000..b10685a --- /dev/null +++ b/app/views/api/v1/users/info.rabl @@ -0,0 +1,3 @@ +object @user + +extends 'api/v1/users/base' \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index e658b6a..9abb6b4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,16 +7,17 @@ Rails.application.routes.draw do namespace :api, defaults: { format: :json } do namespace :v1 do resources :parties, only: [:index, :create, :update, :destroy] - resources :users, only: [:create, :show] + resources :users, only: [:create, :update, :show] resources :grid_weapons, only: [:update] resources :favorites, only: [:create] + get 'users/info/:id', to: 'users#info' + get 'parties/favorites', to: 'parties#favorites' get 'parties/:id', to: 'parties#show' get 'parties/:id/weapons', to: 'parties#weapons' get 'parties/:id/summons', to: 'parties#summons' get 'parties/:id/characters', to: 'parties#characters' - get 'parties/all', to: 'parties#all' post 'check/email', to: 'users#check_email' post 'check/username', to: 'users#check_username' diff --git a/db/migrate/20220304091218_add_fields_to_user.rb b/db/migrate/20220304091218_add_fields_to_user.rb new file mode 100644 index 0000000..591c396 --- /dev/null +++ b/db/migrate/20220304091218_add_fields_to_user.rb @@ -0,0 +1,7 @@ +class AddFieldsToUser < ActiveRecord::Migration[6.1] + def change + add_column :users, :picture, :string + add_column :users, :language, :string + add_column :users, :private, :boolean + end +end diff --git a/db/migrate/20220304091854_add_default_values_to_user.rb b/db/migrate/20220304091854_add_default_values_to_user.rb new file mode 100644 index 0000000..e9c4ca0 --- /dev/null +++ b/db/migrate/20220304091854_add_default_values_to_user.rb @@ -0,0 +1,7 @@ +class AddDefaultValuesToUser < ActiveRecord::Migration[6.1] + def change + change_column :users, :picture, :string, :default => "gran" + change_column :users, :language, :string, :default => "en" + change_column :users, :private, :boolean, :default => false + end +end diff --git a/db/migrate/20220304092134_add_not_nullable_to_user.rb b/db/migrate/20220304092134_add_not_nullable_to_user.rb new file mode 100644 index 0000000..73cd9e2 --- /dev/null +++ b/db/migrate/20220304092134_add_not_nullable_to_user.rb @@ -0,0 +1,6 @@ +class AddNotNullableToUser < ActiveRecord::Migration[6.1] + def change + change_column :users, :language, :string, :default => "en", :null => false + change_column :users, :private, :boolean, :default => false, :null => false + end +end diff --git a/db/migrate/20220304115434_add_element_to_user.rb b/db/migrate/20220304115434_add_element_to_user.rb new file mode 100644 index 0000000..4167858 --- /dev/null +++ b/db/migrate/20220304115434_add_element_to_user.rb @@ -0,0 +1,5 @@ +class AddElementToUser < ActiveRecord::Migration[6.1] + def change + add_column :users, :element, :string, :default => "water", :null => false + end +end diff --git a/db/schema.rb b/db/schema.rb index f727b82..b6fd2d6 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_03_03_092208) do +ActiveRecord::Schema.define(version: 2022_03_04_115434) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" @@ -186,6 +186,10 @@ ActiveRecord::Schema.define(version: 2022_03_03_092208) do t.integer "granblue_id" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false + t.string "picture", default: "gran" + t.string "language", default: "en", null: false + t.boolean "private", default: false, null: false + t.string "element", default: "water", null: false end create_table "weapon_keys", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|