Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Articles API: filtering by tags #3654

Closed
jessleenyc opened this issue Aug 8, 2019 · 6 comments · Fixed by #10614
Closed

Articles API: filtering by tags #3654

jessleenyc opened this issue Aug 8, 2019 · 6 comments · Fixed by #10614
Labels
area: API api or request related issues external contributors welcome contribution is welcome!

Comments

@jessleenyc
Copy link
Contributor

Is your feature request related to a problem? Please describe.

Describe the solution you'd like
In response to #3509, we want to allow the API endpoint to filter by tags and include an 'anti-tag' list.

@bdbch
Copy link

bdbch commented Aug 8, 2019

Awesome, thanks a lot!

@rhymes rhymes changed the title API endpoint for filtering by tags Articles API: filtering by tags Aug 9, 2019
@cdvillard
Copy link

Closed #3668 after @rhymes pointed out that it basically mirrored this. Simply having an additional optional flag for the query string of something like nottagged= would be great, given that #discuss articles are still of type article. There might be an argument, though, to do some heavy lifting now and just create a type discussion, should that grow into its own, but I don't have a deeper understanding of dev.to's architecture, so I'll digress to stay on topic.

@caseyrollins
Copy link

Hi all, taking a stab at this issue! Does anyone have a preference on the name for the filter (anti_tag v. not_tagged)? @rhymes?

@rhymes
Copy link
Contributor

rhymes commented Oct 4, 2019

@caseyrollins since the initial request is talking about filtering by multiple tags I would probably consider introducing two new parameters:

tags which takes a comma separated list of tags to include
tags_exclude which takes a comma separated list of tags to exclude

(right now we have only tag, we could consider extending this to support multiple tags but due to the naming I'm inclined to leave it alone and use two more explicit parameters)

If they both appear they'd have to be applied in and (pseudo SQL: WHERE tags in (a,b,c) AND tags not in (d,e,f))

Not 100% sure if multiple tags in each list should be in AND (I want articles that are tagged both discuss and python but not articles that are tagged both react and javascript) or using OR (I want articles that are tagged either discuss or python but not articles that are tagged either react and javascript)

I think OR inside one list and obviously AND between the two lists is the most logical but it could be up for debate. It's also the closest to how the single parameter tag works right now (It doesn't return articles that are only tagged python, but articles that have python in their tag list).

What do you all think? Should we introduce 2 new params or just extend tag plus the param for exclusion? Should we use AND or OR to join multiple tags in each list?

@caseyrollins
Copy link

@rhymes, I completely agree that tags and tags_exclude should take comma separated lists. I would also say that tags and tags_exclude should be an AND between each other and the tags within each list should be OR. It feels the most intuitive and resembles what I've seen in other APIs.

Do you think tags should be a new parameter (along with exclude_tags), or should tag be removed and replaced with tags? Does the API have a deprecation policy?

@rhymes
Copy link
Contributor

rhymes commented Oct 5, 2019

@caseyrollins thanks!

Does the API have a deprecation policy?

No, not really, we've been operating with the assumption that we're just going to add things and trying not to break anything even though it's a v0

rafaltrojanowski added a commit to rafaltrojanowski/forem that referenced this issue Oct 5, 2020
rafaltrojanowski added a commit to rafaltrojanowski/forem that referenced this issue Oct 6, 2020
* Add test case
* Move tests
* Update docs
rafaltrojanowski added a commit to rafaltrojanowski/forem that referenced this issue Oct 6, 2020
* Add test case
* Move tests
* Update docs
rafaltrojanowski added a commit to rafaltrojanowski/forem that referenced this issue Oct 7, 2020
rhymes pushed a commit that referenced this issue Oct 9, 2020
* Articles API: filtering by tags (#3654)

* Address CR comments (#3654)

* Add test case
* Move tests
* Update docs

* Use _any_ option for querying by tags (#3654)
citizen428 pushed a commit that referenced this issue Oct 12, 2020
* Articles API: filtering by tags (#3654)

* Address CR comments (#3654)

* Add test case
* Move tests
* Update docs

* Use _any_ option for querying by tags (#3654)
boardfish pushed a commit to boardfish/forem that referenced this issue Oct 17, 2020
* Articles API: filtering by tags (forem#3654)

* Address CR comments (forem#3654)

* Add test case
* Move tests
* Update docs

* Use _any_ option for querying by tags (forem#3654)
benhalpern added a commit that referenced this issue Oct 20, 2020
* chore: update the profile to be more dynamic. Maps out the group + field name   + value for field

* feat: add the correct input type to the form tying it to the correct method to update

* feat: update the value and the label

* feat: update the profile with a submit

* refactor: ensure we dont show empty groups on the settings/profile

* fix: this shoudl be dribbble

* fix: use attributes! to refresh the cache to ensure that we font run into the case where Profile.attributes is []

* feat: show group description only when it exists

* chore: add some classes

* feat: use the profile update service to update the relevant user information

* chore: rename variable

* chore: use a scope to not return empty groups

* fix: only update user if the profile sync is update is successful. Also capture errors

* feat: style the crayons field checkbox

* refactor: rename the attribute to user instead of profile

* refactor: service object

* Fix CodeClimate warning and rearrange code

* Fix service object, add missing attribute

* Fix flash and add redirect

* Fix service object + spec

* Fix user edits profile spec

* Disable spec

* Fix more specs

* Undo vim fail

* Add data update scripts

* Update where clause in data update script

* Rename method

* Make sync_to_user conditional

* Add after update actions and Honeycomb

* feat: handle checkbox allow chcekbox to check

* Don't set experience cookie in ProfilesController

* Clean up Profiles::Update object

* Fix spec

* Remove Twitch integration (#10732)

* Remove Twitch integration

* Ignore columns

* Change admin password in docs (#10735)

Update default admin password in documentation

* Do not require meta_keywords to be set (#10721)

* Remove extra character from meta_keywords in /listings/index.html.erb

* Remove meta_keywords from MANDATORY_CONFIGS

* Add and use meta_keywords_tag helper

* Use modern tag syntax instead of deprecated syntax

* Add and use meta_keywords_default helper

* Add and use meta_keywords_article helper

* Remove * from meta_keywords_field.label

* Update meta_keyword specs to account for no keywords being set

* Generalizes Connect welcome message and settings nav tab and refactors tests (#10741) [deploy]

* [deploy] fix: Clear chat input after Enter key submit (#10487)

* fix: Clear chat input after Enter key submit

* fix: Rename Composer component

* test: Add integration tests for input value

* After pressing Enter
* After clicking Send
* After clicking Save edit
* After clicking Close edit

* Remove tabindex of -1 on upload image input in the write a post editor (#10543)

* Remove tabindex of -1 on upload image input in the write a post editor

* Remove negative tabindex on image uploader's outer button

* Give tabindex of -1 to outer button on image uploader

* Update buttons.scss

* [deploy] Add recaptcha keys to as site-configurable keys (#10736)

* Add recaptcha keys to as site-configurable keys

* Add recaptcha to site config view

* Use site config key

* Make ReCAPTCHA tag optional if keys are blank

* Use proper capitalization of recaptcha

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>

* Refactor logic for readability

* Use proper capitalization of recaptcha

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>

* Use proper capitalization of recaptcha

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>

* Use proper capitalization of recaptcha

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>

* Add Section for Series/Collections (#10719)

* Add Section for Series/Collections

I added a small section in this area of the docs to share some information about collections/ series. 

There is not much information in the documentation about collections or series and I felt like this would be beneficial to others looking to help with the Series feature of the website.

* Updated wording of collections section.

* Articles API: filtering by tags (#3654) (#10614)

* Articles API: filtering by tags (#3654)

* Address CR comments (#3654)

* Add test case
* Move tests
* Update docs

* Use _any_ option for querying by tags (#3654)

* Move Imgproxy endpoint config to Images::Optimizer (#10742)

* Link Email Account creation UI to existing Create Account UI (#10746) [deploy]

* Conditional button to link to email accout creation

* Rename email signup state param

* Test for email account creation button scenarios

* Add forem meta tags (#10747)

* Add forem meta tags

* Add docs

* Update docs/technical-overview/compatibility.md

Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>

* Update docs/technical-overview/compatibility.md

Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>

* Update docs/technical-overview/compatibility.md

Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>

* Update docs/technical-overview/compatibility.md

Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>

* Remove Twitch-related columns from users table (#10750)

* [deploy] Long text goes outside cards (#10740)

* Add word-break to crayons-card

Add word-break to crayons-card this will allow words to be broken if the word is too long but will wrap normally otherwise.

* Use overflow-wrap: anywhere;

`break-word` is deprecated though `anywhere` does not work in IE

* Removes superfluous sign_in from users_onboarding_spec.rb (#10757) [deploy]

* [deploy] Allow glitch id starting with ~ (#10544)

* [deploy] crayons prep (#10737)

* Add DEV special case for following hiring tag

* Move image validation to Profiles::Update object

* spec: move over the tests for validating images

* Move follow_hiring_tag into the service object

Co-authored-by: Ridhwana <ridhwana.khan16@gmail.com>
Co-authored-by: Andrew Bone <AndrewB05@gmail.com>
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
Co-authored-by: Robin Gagnon <me@reobin.dev>
Co-authored-by: Manaswini <58681405+Manaswini1832@users.noreply.github.com>
Co-authored-by: Andy Zhao <17884966+Zhao-Andy@users.noreply.github.com>
Co-authored-by: Christopher Wray <53663762+cwray-tech@users.noreply.github.com>
Co-authored-by: Rafal Trojanowski <rt.trojanowski@gmail.com>
Co-authored-by: Mac Siri <mac@dev.to>
Co-authored-by: Josh Puetz <josh@dev.to>
Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>
Co-authored-by: irmela <irmela@berlin-coding.de>
Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: API api or request related issues external contributors welcome contribution is welcome!
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants