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

Add redirects table and migration script #3185

Merged
merged 6 commits into from
Feb 19, 2024
Merged

Add redirects table and migration script #3185

merged 6 commits into from
Feb 19, 2024

Conversation

mlbrgl
Copy link
Member

@mlbrgl mlbrgl commented Feb 9, 2024

This PR adds a new redirects table to hold redirects currently stored in the Wordpress database.

It also adds a migration script to import Wordpress redirects: syncRedirectsToGrapher:

[...]
Skipping, a redirect already exists for "/what-makes-a-disease-eradicable"
Skipping, a redirect already exists for "/sources-for-eradication-of-diseases"
Skipping, a redirect already exists for "/can-the-world-eradicate-another-disease"
Adding redirect: /full-stack-engineer-q4-2023 -> /jobs
  • when going live: node itsJustJavascript/baker/syncRedirectsToGrapher.js

Testing

The number of enabled redirected in the Wordpress table is identical to the number of redirects in the new table after running the migration script.

Copy link

coderabbitai bot commented Feb 9, 2024

Important

Auto Review Skipped

Auto reviews are disabled on base/target branches other than the default branch. Please add the base/target branch pattern to the list of additional branches to be reviewed in the settings.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository.

To trigger a single review, invoke the @coderabbitai review command.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share

Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit-tests for this file.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit tests for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository from git and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit tests.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • The JSON schema for the configuration file is available here.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/coderabbit-overrides.v2.json

CodeRabbit Discord Community

Join our Discord Community to get help, request features, and share feedback.

Copy link
Contributor

@danyx23 danyx23 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice to finally pull this into our DB :)

I think it would be good to do a bit more cleanup in the sync script:

  • remove trailing slashes in source
  • remove trailing slashes in target unless it is the root url (/)
  • get rid of chains. We currently have 28 redirects where the target of one is the source of another (i.e. A.target == B.source - see query below). I think it would be nice to resolve these to the final target before storing them in our DB

To see the chains, this query is useful:

select
	hop1.source as initialSource,
	hop1.target as intermediateTarget,
	hop2.target as finalTarget,
	hop3.target as veryFinalTarget
from
	redirects hop1
inner join redirects hop2 on
	hop2.source = hop1.target
left join redirects hop3 on
	hop2.target = hop3.source

Copy link
Contributor

@danyx23 danyx23 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see above

@mlbrgl mlbrgl force-pushed the content-graph-embeds branch from 68c10b8 to d6079f7 Compare February 13, 2024 20:37
@mlbrgl mlbrgl force-pushed the redirects-migration branch from 5912d1d to 67d13f9 Compare February 13, 2024 20:37
@mlbrgl mlbrgl force-pushed the content-graph-embeds branch from d6079f7 to 9d9a459 Compare February 14, 2024 08:38
@mlbrgl mlbrgl force-pushed the redirects-migration branch from 67d13f9 to 90655d5 Compare February 14, 2024 08:38
@mlbrgl mlbrgl requested a review from danyx23 February 15, 2024 21:07
@mlbrgl
Copy link
Member Author

mlbrgl commented Feb 16, 2024

@danyx23

remove trailing slashes in source
remove trailing slashes in target unless it is the root url (/)

✅ (see code comments for further edge cases)

get rid of chains. We currently have 28 redirects where the target of one is the source of another (i.e. A.target == B.source - see query below). I think it would be nice to resolve these to the final target before storing them in our DB

✅ I adapted and reused the internal resolver logic for this

@mlbrgl mlbrgl force-pushed the content-graph-embeds branch from 9d9a459 to 4f82e1a Compare February 18, 2024 08:59
@mlbrgl mlbrgl force-pushed the redirects-migration branch from 90c76db to 2785a24 Compare February 18, 2024 08:59
Copy link
Contributor

@danyx23 danyx23 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, looks good! Arguable existingRedirectsFromDb should be a set but the runtime difference is probably negligible :)

@mlbrgl
Copy link
Member Author

mlbrgl commented Feb 19, 2024

@danyx23 yes at that scale any kind of optimization probably doesn't change much, especially given that we won't be running this script more than a handful of times.

Out of curiosity though, do you mean doing something like what you did there?

// This is doing a set difference, but we want to do the set operation on a subset
// of fields (the ones we stringify into the compare key) while retaining the full
// object so that we can e.g. delete efficiently by id later on.
for (const [linkInDocCompareKey, linkInDoc] of Object.entries(
linksInDocument
))
if (!(linkInDocCompareKey in linksInDb)) linksToAdd.push(linkInDoc)
for (const [linkInDbCompareKey, linkInDb] of Object.entries(linksInDb))
if (!(linkInDbCompareKey in linksInDocument))
linksToDelete.push(...linkInDb)
return { linksToAdd, linksToDelete }

@mlbrgl mlbrgl force-pushed the content-graph-embeds branch from 4f82e1a to 6a12c91 Compare February 19, 2024 14:02
@mlbrgl mlbrgl force-pushed the redirects-migration branch from 2785a24 to 71ad893 Compare February 19, 2024 14:03
@mlbrgl mlbrgl force-pushed the content-graph-embeds branch from 6a12c91 to b940bbc Compare February 19, 2024 14:35
@mlbrgl mlbrgl force-pushed the redirects-migration branch from 71ad893 to e41d3a3 Compare February 19, 2024 14:35
@mlbrgl
Copy link
Member Author

mlbrgl commented Feb 19, 2024

Merge activity

  • Feb 19, 12:02 PM EST: @mlbrgl started a stack merge that includes this pull request via Graphite.
  • Feb 19, 12:09 PM EST: Graphite rebased this pull request as part of a merge.
  • Feb 19, 12:10 PM EST: @mlbrgl merged this pull request with Graphite.

@mlbrgl mlbrgl force-pushed the content-graph-embeds branch from b940bbc to 7e1c618 Compare February 19, 2024 17:06
Base automatically changed from content-graph-embeds to master February 19, 2024 17:08
@mlbrgl mlbrgl force-pushed the redirects-migration branch from e41d3a3 to 88727a1 Compare February 19, 2024 17:08
@mlbrgl mlbrgl merged commit 2d3378f into master Feb 19, 2024
14 of 16 checks passed
@mlbrgl mlbrgl deleted the redirects-migration branch February 19, 2024 17:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants