Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #46 from malparty/feature/list-keywords-backend
[#26] [BackEnd] As a User, I can see a list of my previous keywords
- Loading branch information
Showing
17 changed files
with
375 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,19 @@ | ||
# frozen_string_literal: true | ||
|
||
class KeywordsController < ApplicationController | ||
def index; end | ||
include Pagy::Backend | ||
|
||
def index | ||
pagy, keywords_list = pagy(keywords) | ||
|
||
render locals: { | ||
pagy: pagy, keywords: keywords_list | ||
} | ||
end | ||
|
||
private | ||
|
||
def keywords | ||
KeywordsQuery.new(current_user).call | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# frozen_string_literal: true | ||
|
||
class RegistrationsController < Devise::RegistrationsController | ||
# Override user hard-delete (from Devise) with user soft-delete | ||
def destroy | ||
resource.discard | ||
|
||
Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name) | ||
|
||
set_flash_message :notice, :destroyed | ||
|
||
yield resource if block_given? | ||
|
||
respond_with_navigational(resource) { redirect_to after_sign_out_path_for(resource_name) } | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# frozen_string_literal: true | ||
|
||
class Keyword < ApplicationRecord | ||
include Discard::Model | ||
|
||
validates :name, presence: true, length: { maximum: 255 } | ||
|
||
belongs_to :user, inverse_of: :keywords | ||
|
||
default_scope -> { kept } | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# frozen_string_literal: true | ||
|
||
class KeywordsQuery | ||
def initialize(user) | ||
@keywords = user.keywords | ||
end | ||
|
||
def call | ||
order_by_name | ||
end | ||
|
||
private | ||
|
||
attr_reader :keywords | ||
|
||
def order_by_name | ||
keywords.order(:name) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,181 @@ | ||
# frozen_string_literal: true | ||
|
||
# Pagy initializer file (4.10.1) | ||
# Customize only what you really need and notice that Pagy works also without any of the following lines. | ||
# Should you just cherry pick part of this file, please maintain the require-order of the extras | ||
|
||
|
||
# Pagy Variables | ||
# See https://ddnexus.github.io/pagy/api/pagy#variables | ||
# All the Pagy::VARS are set for all the Pagy instances but can be overridden | ||
# per instance by just passing them to Pagy.new or the #pagy controller method | ||
|
||
|
||
# Instance variables | ||
# See https://ddnexus.github.io/pagy/api/pagy#instance-variables | ||
# Pagy::VARS[:page] = 1 # default | ||
Pagy::VARS[:items] = 50 | ||
# Pagy::VARS[:outset] = 0 # default | ||
|
||
|
||
# Other Variables | ||
# See https://ddnexus.github.io/pagy/api/pagy#other-variables | ||
# Pagy::VARS[:size] = [1,4,4,1] # default | ||
# Pagy::VARS[:page_param] = :page # default | ||
# Pagy::VARS[:params] = {} # default | ||
# Pagy::VARS[:fragment] = '#fragment' # example | ||
# Pagy::VARS[:link_extra] = 'data-remote="true"' # example | ||
# Pagy::VARS[:i18n_key] = 'pagy.item_name' # default | ||
# Pagy::VARS[:cycle] = true # example | ||
|
||
|
||
# Extras | ||
# See https://ddnexus.github.io/pagy/extras | ||
|
||
|
||
# Backend Extras | ||
|
||
# Array extra: Paginate arrays efficiently, avoiding expensive array-wrapping and without overriding | ||
# See https://ddnexus.github.io/pagy/extras/array | ||
# require 'pagy/extras/array' | ||
|
||
# Countless extra: Paginate without any count, saving one query per rendering | ||
# See https://ddnexus.github.io/pagy/extras/countless | ||
# require 'pagy/extras/countless' | ||
|
||
# Elasticsearch Rails extra: Paginate `ElasticsearchRails::Results` objects | ||
# See https://ddnexus.github.io/pagy/extras/elasticsearch_rails | ||
# default :pagy_search method: change only if you use | ||
# also the searchkick extra that defines the same | ||
# VARS[:elasticsearch_rails_search_method] = :pagy_search | ||
# require 'pagy/extras/elasticsearch_rails' | ||
|
||
# Searchkick extra: Paginate `Searchkick::Results` objects | ||
# See https://ddnexus.github.io/pagy/extras/searchkick | ||
# default :pagy_search method: change only if you use | ||
# also the elasticsearch_rails extra that defines the same | ||
# VARS[:searchkick_search_method] = :pagy_search | ||
# require 'pagy/extras/searchkick' | ||
|
||
# Frontend Extras | ||
|
||
# Bootstrap extra: Add nav, nav_js and combo_nav_js helpers and templates for Bootstrap pagination | ||
# See https://ddnexus.github.io/pagy/extras/bootstrap | ||
# require 'pagy/extras/bootstrap' | ||
|
||
# Bulma extra: Add nav, nav_js and combo_nav_js helpers and templates for Bulma pagination | ||
# See https://ddnexus.github.io/pagy/extras/bulma | ||
# require 'pagy/extras/bulma' | ||
|
||
# Foundation extra: Add nav, nav_js and combo_nav_js helpers and templates for Foundation pagination | ||
# See https://ddnexus.github.io/pagy/extras/foundation | ||
# require 'pagy/extras/foundation' | ||
|
||
# Materialize extra: Add nav, nav_js and combo_nav_js helpers for Materialize pagination | ||
# See https://ddnexus.github.io/pagy/extras/materialize | ||
# require 'pagy/extras/materialize' | ||
|
||
# Navs extra: Add nav_js and combo_nav_js javascript helpers | ||
# Notice: the other frontend extras add their own framework-styled versions, | ||
# so require this extra only if you need the unstyled version | ||
# See https://ddnexus.github.io/pagy/extras/navs | ||
# require 'pagy/extras/navs' | ||
|
||
# Semantic extra: Add nav, nav_js and combo_nav_js helpers for Semantic UI pagination | ||
# See https://ddnexus.github.io/pagy/extras/semantic | ||
# require 'pagy/extras/semantic' | ||
|
||
# UIkit extra: Add nav helper and templates for UIkit pagination | ||
# See https://ddnexus.github.io/pagy/extras/uikit | ||
# require 'pagy/extras/uikit' | ||
|
||
# Multi size var used by the *_nav_js helpers | ||
# See https://ddnexus.github.io/pagy/extras/navs#steps | ||
# Pagy::VARS[:steps] = { 0 => [2,3,3,2], 540 => [3,5,5,3], 720 => [5,7,7,5] } # example | ||
|
||
|
||
# Feature Extras | ||
|
||
# Headers extra: http response headers (and other helpers) useful for API pagination | ||
# See http://ddnexus.github.io/pagy/extras/headers | ||
# require 'pagy/extras/headers' | ||
# Pagy::VARS[:headers] = { page: 'Current-Page', items: 'Page-Items', count: 'Total-Count', pages: 'Total-Pages' } # default | ||
|
||
# Support extra: Extra support for features like: incremental, infinite, auto-scroll pagination | ||
# See https://ddnexus.github.io/pagy/extras/support | ||
# require 'pagy/extras/support' | ||
|
||
# Items extra: Allow the client to request a custom number of items per page with an optional selector UI | ||
# See https://ddnexus.github.io/pagy/extras/items | ||
# require 'pagy/extras/items' | ||
# Pagy::VARS[:items_param] = :items # default | ||
# Pagy::VARS[:max_items] = 100 # default | ||
# set to false if you want to make :enable_items_extra an opt-in variable | ||
# Pagy::VARS[:enable_items_extra] = false # default true | ||
|
||
# Overflow extra: Allow for easy handling of overflowing pages | ||
# See https://ddnexus.github.io/pagy/extras/overflow | ||
# require 'pagy/extras/overflow' | ||
# Pagy::VARS[:overflow] = :empty_page # default (other options: :last_page and :exception) | ||
|
||
# Metadata extra: Provides the pagination metadata to Javascript frameworks like Vue.js, react.js, etc. | ||
# See https://ddnexus.github.io/pagy/extras/metadata | ||
# you must require the shared internal extra (BEFORE the metadata extra) ONLY if you need also the :sequels | ||
# require 'pagy/extras/shared' | ||
# require 'pagy/extras/metadata' | ||
# For performance reason, you should explicitly set ONLY the metadata you use in the frontend | ||
# Pagy::VARS[:metadata] = [:scaffold_url, :count, :page, :prev, :next, :last] # example | ||
|
||
# Trim extra: Remove the page=1 param from links | ||
# See https://ddnexus.github.io/pagy/extras/trim | ||
# require 'pagy/extras/trim' | ||
# after requiring it will trim by default | ||
# set to false if you want to make :enable_trim_extra an opt-in variable | ||
# Pagy::VARS[:enable_trim_extra] = false # default true | ||
|
||
|
||
# Rails | ||
|
||
# Rails: extras assets path required by the helpers that use javascript | ||
# (pagy*_nav_js, pagy*_combo_nav_js, and pagy_items_selector_js) | ||
# See https://ddnexus.github.io/pagy/extras#javascript | ||
# Rails.application.config.assets.paths << Pagy.root.join('javascripts') | ||
|
||
|
||
# I18n | ||
|
||
# Pagy internal I18n: ~18x faster using ~10x less memory than the i18n gem | ||
# See https://ddnexus.github.io/pagy/api/frontend#i18n | ||
# Notice: No need to configure anything in this section if your app uses only "en" | ||
# or if you use the i18n extra below | ||
# | ||
# Examples: | ||
# load the "de" built-in locale: | ||
# Pagy::I18n.load(locale: 'de') | ||
# | ||
# load the "de" locale defined in the custom file at :filepath: | ||
# Pagy::I18n.load(locale: 'de', filepath: 'path/to/pagy-de.yml') | ||
# | ||
# load the "de", "en" and "es" built-in locales: | ||
# (the first passed :locale will be used also as the default_locale) | ||
# Pagy::I18n.load({locale: 'de'}, | ||
# {locale: 'en'}, | ||
# {locale: 'es'}) | ||
# | ||
# load the "en" built-in locale, a custom "es" locale, | ||
# and a totally custom locale complete with a custom :pluralize proc: | ||
# (the first passed :locale will be used also as the default_locale) | ||
# Pagy::I18n.load({locale: 'en'}, | ||
# {locale: 'es', filepath: 'path/to/pagy-es.yml'}, | ||
# {locale: 'xyz', # not built-in | ||
# filepath: 'path/to/pagy-xyz.yml', | ||
# pluralize: lambda{|count| ... } ) | ||
|
||
|
||
# I18n extra: uses the standard i18n gem which is ~18x slower using ~10x more memory | ||
# than the default pagy internal i18n (see above) | ||
# See https://ddnexus.github.io/pagy/extras/i18n | ||
# require 'pagy/extras/i18n' | ||
|
||
# Default i18n key | ||
# Pagy::VARS[:i18n_key] = 'pagy.item_name' # default |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# frozen_string_literal: true | ||
|
||
class CreateKeywords < ActiveRecord::Migration[6.1] | ||
def change | ||
create_table :keywords do |t| | ||
t.string :name, null: false | ||
|
||
t.references :user, index: true, null: false, foreign_key: true | ||
|
||
t.timestamps | ||
end | ||
|
||
add_index :keywords, :name | ||
end | ||
end |
9 changes: 9 additions & 0 deletions
9
db/migrate/20210628063806_add_discarded_at_to_users_and_keywords.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
class AddDiscardedAtToUsersAndKeywords < ActiveRecord::Migration[6.1] | ||
def change | ||
add_column :users, :discarded_at, :datetime | ||
add_index :users, :discarded_at | ||
|
||
add_column :keywords, :discarded_at, :datetime | ||
add_index :keywords, :discarded_at | ||
end | ||
end |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# frozen_string_literal: true | ||
|
||
Fabricator(:keyword) do | ||
name { FFaker::FreedomIpsum.word } | ||
user { Fabricate(:user) } | ||
end |
Oops, something went wrong.