From c78a28c6761a8e370efb90f52d2f516d0a66aef4 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 4 Mar 2022 01:17:04 -0800 Subject: [PATCH 1/7] Add new fields to user object --- db/migrate/20220304091218_add_fields_to_user.rb | 7 +++++++ db/schema.rb | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20220304091218_add_fields_to_user.rb 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/schema.rb b/db/schema.rb index f727b82..6b8be7b 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_091218) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" @@ -186,6 +186,9 @@ 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" + t.string "language" + t.boolean "private" end create_table "weapon_keys", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| From 840dbeb697f8ee61fd171459d1a9e2c131fca2dc Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 4 Mar 2022 01:33:39 -0800 Subject: [PATCH 2/7] Update field nullable and default value --- db/migrate/20220304091854_add_default_values_to_user.rb | 7 +++++++ db/migrate/20220304092134_add_not_nullable_to_user.rb | 6 ++++++ db/schema.rb | 8 ++++---- 3 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20220304091854_add_default_values_to_user.rb create mode 100644 db/migrate/20220304092134_add_not_nullable_to_user.rb 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/schema.rb b/db/schema.rb index 6b8be7b..36e0fe0 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_04_091218) do +ActiveRecord::Schema.define(version: 2022_03_04_092134) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" @@ -186,9 +186,9 @@ ActiveRecord::Schema.define(version: 2022_03_04_091218) do t.integer "granblue_id" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false - t.string "picture" - t.string "language" - t.boolean "private" + t.string "picture", default: "gran" + t.string "language", default: "en", null: false + t.boolean "private", default: false, null: false end create_table "weapon_keys", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| From 5e2a28c34042c3623df6d2b11cae8f1c05653bf5 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 4 Mar 2022 01:33:48 -0800 Subject: [PATCH 3/7] Add new fields to json template --- app/views/api/v1/users/base.json.rabl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/views/api/v1/users/base.json.rabl b/app/views/api/v1/users/base.json.rabl index 7308969..aeb5ec2 100644 --- a/app/views/api/v1/users/base.json.rabl +++ b/app/views/api/v1/users/base.json.rabl @@ -2,4 +2,7 @@ object :user attributes :id, :username, - :granblue_id \ No newline at end of file + :granblue_id, + :picture, + :language, + :private \ No newline at end of file From e7099b2d34c131189cc999c32d63e65d5c2156e7 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 4 Mar 2022 03:56:20 -0800 Subject: [PATCH 4/7] Add element to user The bg color for pictures --- db/migrate/20220304115434_add_element_to_user.rb | 5 +++++ db/schema.rb | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20220304115434_add_element_to_user.rb 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 36e0fe0..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_04_092134) 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" @@ -189,6 +189,7 @@ ActiveRecord::Schema.define(version: 2022_03_04_092134) do 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| From b5ba7725d2915f9320f41a2fc55f8109931d8b95 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 4 Mar 2022 03:57:35 -0800 Subject: [PATCH 5/7] Add picture node to user template --- app/views/api/v1/users/base.json.rabl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/views/api/v1/users/base.json.rabl b/app/views/api/v1/users/base.json.rabl index aeb5ec2..2c11719 100644 --- a/app/views/api/v1/users/base.json.rabl +++ b/app/views/api/v1/users/base.json.rabl @@ -3,6 +3,12 @@ object :user attributes :id, :username, :granblue_id, - :picture, :language, - :private \ No newline at end of file + :private + +node :picture do |u| + { + :picture => u.picture, + :element => u.element + } +end \ No newline at end of file From 49e4a02150bbdf7fd7634a5e622835021e32957d Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 4 Mar 2022 05:14:36 -0800 Subject: [PATCH 6/7] Add update and info method on User --- app/controllers/api/v1/users_controller.rb | 22 ++++++++++++++++++---- app/views/api/v1/users/info.rabl | 3 +++ 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 app/views/api/v1/users/info.rabl 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/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 From 9fd1c3329609488d08e351f0bec9dda78666d687 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 4 Mar 2022 05:14:46 -0800 Subject: [PATCH 7/7] Add routes for User --- config/routes.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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'