From 22a6f25b839c8a2d260c9640a7d2bf227e2ef546 Mon Sep 17 00:00:00 2001 From: Philipp Fent Date: Tue, 26 May 2026 10:18:21 +0200 Subject: [PATCH] add link checker --- .github/workflows/links.yml | 38 +++++++++++++++++++++++++ README.md | 2 +- content/clients/javascript/_index.md | 2 +- content/clients/tools/dbeaver.md | 2 +- content/community_edition.md | 2 +- content/example_datasets/job.md | 6 ++-- content/example_datasets/nasdaq.md | 2 +- content/references/datatypes/boolean.md | 2 +- data/releasenotes.json | 8 +++--- hugo.yaml | 2 +- i18n/en.yaml | 2 +- layouts/partials/footer.html | 6 ++-- lychee.toml | 17 +++++++++++ 13 files changed, 73 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/links.yml create mode 100644 lychee.toml diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml new file mode 100644 index 00000000..68f7bfd4 --- /dev/null +++ b/.github/workflows/links.yml @@ -0,0 +1,38 @@ +name: Link Checker + +on: + pull_request: + schedule: + - cron: '0 2 * * *' + +jobs: + linkChecker: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Hugo + if: github.event_name == 'pull_request' + uses: peaceiris/actions-hugo@v3 + with: + hugo-version: '0.131.0' + + - name: Build + if: github.event_name == 'pull_request' + run: hugo --minify + + - name: Serve + if: github.event_name == 'pull_request' + run: python3 -m http.server 8080 --directory public & + + - name: Check Links (PR) + if: github.event_name == 'pull_request' + uses: lycheeverse/lychee-action@v2 + with: + args: --config lychee.toml --base-url 'http://localhost:8080' --verbose --no-progress './public/**/*.html' + + - name: Check Links (Scheduled) + if: github.event_name == 'schedule' + uses: lycheeverse/lychee-action@v2 + with: + args: --config lychee.toml --base-url 'https://cedardb.com' --verbose --no-progress './content/**/*.md' diff --git a/README.md b/README.md index f75548c7..8890aaf4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # CedarDB Documentation -This repository contains the code for the [CedarDB documentation](https://cedardb.com/docs). +This repository contains the code for the [CedarDB documentation](https://cedardb.com/docs/). The documentation is built by the static-site-generator [Hugo](https://gohugo.io/) and uses the [Hextra](https://imfing.github.io/hextra/docs/guide/) theme. Clone repository: diff --git a/content/clients/javascript/_index.md b/content/clients/javascript/_index.md index 794a77e1..cb1b652f 100644 --- a/content/clients/javascript/_index.md +++ b/content/clients/javascript/_index.md @@ -71,7 +71,7 @@ for (const row of result.rows) { ### Bulk loading For large imports, use `COPY FROM STDIN` via the -[pg-copy-streams](https://github.com/brianc/pg-copy-streams) package: +[pg-copy-streams](https://github.com/brianc/node-pg-copy-streams) package: ```shell npm install pg-copy-streams diff --git a/content/clients/tools/dbeaver.md b/content/clients/tools/dbeaver.md index ecf837a4..a990969d 100644 --- a/content/clients/tools/dbeaver.md +++ b/content/clients/tools/dbeaver.md @@ -51,7 +51,7 @@ the [official docs](https://dbeaver.com/docs/dbeaver/Create-Connection/). This is a brief overview of the features you can use with DBeaver. For more in-depth information, use -[DBeaver's getting started guide](https://dbeaver.com/docs/dbeaver/Basic-operations-with-DBeaver/). +[DBeaver's getting started guide](https://github.com/dbeaver/dbeaver/wiki/Basic-operations). ### Schema diff --git a/content/community_edition.md b/content/community_edition.md index f7f00bf3..c04e7081 100644 --- a/content/community_edition.md +++ b/content/community_edition.md @@ -38,7 +38,7 @@ The **CedarDB Community Edition** It is **the right choice** for everything from solo projects to small-scale production workloads. No strings attached! {{% callout type="info" %}} -Looking for advanced features or enterprise support? Check out the **Enterprise Edition** or visit our [pricing page](https://cedardb.com/pricing). +Looking for advanced features or enterprise support? Check out the **Enterprise Edition** or visit our [pricing page](https://cedardb.com/pricing/). {{% /callout %}} | | Community Edition | Enterprise Edition | diff --git a/content/example_datasets/job.md b/content/example_datasets/job.md index 8af9c9e9..8b92f207 100644 --- a/content/example_datasets/job.md +++ b/content/example_datasets/job.md @@ -16,7 +16,7 @@ assume uniform data distribution and instead has to rely on collected samples an The dataset comprises a total of 21 tables extracted from IMDB, containing information about the movie industry, such as movies, studios, actors, and their connections, such as roles of actors in movies. -The full schema with information on all tables is available as an SQL file [schema.sql](https://www.cedardb.com/data/job/schema.sql). +The full schema with information on all tables is available as an SQL file [schema.sql](https://cedardb.com/data/job/schema.sql). E.g., the `cast_info` table, which comprises the most rows by far, can be created as: ```sql @@ -50,7 +50,7 @@ The compressed tarball is about 1.2 GB to download, which decompresses to a ### Import the schema to CedarDB -To create the full schema inside CedarDB, download the [schema.sql](https://www.cedardb.com/data/job/schema.sql) file and load it, either on a new connection using: +To create the full schema inside CedarDB, download the [schema.sql](https://cedardb.com/data/job/schema.sql) file and load it, either on a new connection using: ```shell psql -h localhost -U {{username}} < your/path/schema.sql @@ -78,7 +78,7 @@ Some strings in the IMDB dataset contain the separator `,`, so you have to use t more performant `TEXT` when importing the data. {{< /callout >}} -For convenience, we provide an SQL file will all necessary copy commands [load.sql](https://www.cedardb.com/data/job/load.sql). +For convenience, we provide an SQL file will all necessary copy commands [load.sql](https://cedardb.com/data/job/load.sql). Please note that you need to modify the include paths from `your/path` to the correct location relative to the CedarDB server. diff --git a/content/example_datasets/nasdaq.md b/content/example_datasets/nasdaq.md index 8fc9d7ce..22c613ca 100644 --- a/content/example_datasets/nasdaq.md +++ b/content/example_datasets/nasdaq.md @@ -81,7 +81,7 @@ $ hexdump -C -n 100 01302020.NASDAQ_ITCH50 00000064 ``` -We have written a [Python parser](https://github.com/cedardb/examples/blob/main/nasdaq/parser.py) to transform this into human-readable CSV files. +We have written a [Python parser](https://github.com/cedardb/examples/blob/main/nasdaq/parser/parser.py) to transform this into human-readable CSV files. It is automatically invoked by the `prepare.sh` script. {{< callout type="info" >}} diff --git a/content/references/datatypes/boolean.md b/content/references/datatypes/boolean.md index 0e047f6e..8a771256 100644 --- a/content/references/datatypes/boolean.md +++ b/content/references/datatypes/boolean.md @@ -52,7 +52,7 @@ To opt-out of this behavior you can use `x is null`, which never returns `null`. The syntax to compare two values and consider `nulls` equal is somewhat verbose: `x is not distinct from y`. However, while most functions return `null` for any `null` input, for boolean logic, e.g., in `and`, a single `false` -can determine the whole expressions [[1](http://databasearchitects.blogspot.com/2017/02/reasoning-in-presence-of-nulls.html), [2](https://doi.org/10.1109/ICDE.2018.00214)]. +can determine the whole expressions [[1](https://databasearchitects.blogspot.com/2017/02/reasoning-in-presence-of-nulls.html), [2](https://doi.org/10.1109/ICDE.2018.00214)]. This results in more subtle ternary truth tables for booleans: ```sql diff --git a/data/releasenotes.json b/data/releasenotes.json index c3fee1dd..0d1eb80b 100644 --- a/data/releasenotes.json +++ b/data/releasenotes.json @@ -1527,11 +1527,11 @@ "notes": [ { "type": "feat", - "note": "Added support for regexp_count and regexp_instr." + "note": "Added support for regexp_count and regexp_instr." }, { "type": "feat", - "note": "Added support for string_to_table." + "note": "Added support for string_to_table." }, { "type": "feat", @@ -2334,7 +2334,7 @@ }, { "type": "feat", - "note": "Output of explain is now flatter, allowing you to more easily read query plans of complex queries. For a full overview and instructions on how to get back the old behavior, please refer to our docs." + "note": "Output of explain is now flatter, allowing you to more easily read query plans of complex queries. For a full overview and instructions on how to get back the old behavior, please refer to our docs." }, { "type": "feat", @@ -2496,7 +2496,7 @@ "notes": [ { "type": "feat", - "note": "We have added support for explain statements after different query optimization steps. For example, explain (step Unnesting) select * from foo, bar where foo.a = bar.b shows the query tree after the 'Unnesting' optimization step but before the 'Predicate Pushdown' step. For the syntax and available steps, please refer to our docs." + "note": "We have added support for explain statements after different query optimization steps. For example, explain (step Unnesting) select * from foo, bar where foo.a = bar.b shows the query tree after the 'Unnesting' optimization step but before the 'Predicate Pushdown' step. For the syntax and available steps, please refer to our docs." }, { "type": "perf", diff --git a/hugo.yaml b/hugo.yaml index bbeb9cd2..c636b62b 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -37,7 +37,7 @@ menu: url: https://cedardb.com/ weight: 1 - name: Blog - url: https://cedardb.com/blog + url: https://cedardb.com/blog/ weight: 2 - name: Search weight: 3 diff --git a/i18n/en.yaml b/i18n/en.yaml index 742070e7..b5523e2d 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -1,2 +1,2 @@ -copyright: "© CedarDB | [Imprint](https://cedardb.com/imprint)" +copyright: "© CedarDB | [Imprint](https://cedardb.com/imprint/)" poweredBy: "" diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 12d7be7e..784e378c 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -11,9 +11,9 @@