Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,5 @@ crates/pgt_treesitter_grammar/src/node-types.json
crates/pgt_treesitter_grammar/src/parser.c
crates/pgt_treesitter_grammar/src/parser.c.codex-session-id
.codex-session-id

site/
2 changes: 1 addition & 1 deletion docs/codegen/src/rules_index.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ fn generate_group(

write!(
content,
"| [{rule_name}](./{dashed_rule}) | {summary} | {properties} |"
"| [{rule_name}](./rules/{dashed_rule}.md) | {summary} | {properties} |"
)?;

writeln!(content)?;
Expand Down
7 changes: 5 additions & 2 deletions docs/codegen/src/rules_sources.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,15 @@ pub fn generate_rule_sources(docs_dir: &Path) -> anyhow::Result<()> {
for (rule_name, metadata) in rules {
let kebab_rule_name = Case::Kebab.convert(rule_name);
if metadata.sources.is_empty() {
exclusive_rules.insert((rule_name.to_string(), format!("../rules/{kebab_rule_name}")));
exclusive_rules.insert((
rule_name.to_string(),
format!("./rules/{kebab_rule_name}.md"),
));
} else {
for source in metadata.sources {
let source_set = SourceSet {
rule_name: rule_name.to_string(),
link: format!("../rules/{kebab_rule_name}"),
link: format!("./rules/{kebab_rule_name}.md"),
source_link: source.to_rule_url(),
source_rule_name: source.as_rule_name().to_string(),
};
Expand Down
7 changes: 4 additions & 3 deletions docs/codegen/src/splinter_docs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,10 @@ fn generate_splinter_rule_doc(
writeln!(content, "{}", splinter_meta.description)?;
writeln!(content)?;

// Add "Learn More" link with remediation URL from trait
let remediation = splinter_meta.remediation;
writeln!(content, "[Learn More]({remediation})")?;
// Add remediation section
writeln!(content, "## Remediation")?;
writeln!(content)?;
writeln!(content, "{}", splinter_meta.remediation)?;
writeln!(content)?;

// Add SQL query section (with metadata stripped)
Expand Down
2 changes: 1 addition & 1 deletion docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,5 +103,5 @@ In the following example, we include all files, except those in any test/ folder
```

#### Control files via VCS
You can ignore files ignored by your [VCS](/guides/vcs_integration.md).
You can ignore files ignored by your [VCS](guides/vcs_integration.md).

4 changes: 2 additions & 2 deletions docs/getting_started.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Install via your package manager if you use one:
pnpm add -D -E @postgres-language-server/cli
```

Alternatively, most [editor integrations](/guides/ide_setup) will manage the installation for you, or you can install it as a [standalone executable](/manual_installation).
Alternatively, most [editor integrations](guides/ide_setup.md) will manage the installation for you, or you can install it as a [standalone executable](manual_installation.md).

## Configuration

Expand Down Expand Up @@ -88,6 +88,6 @@ The Postgres Language Server is available as an extension in your favorite edito

Run `postgres-language-server check` in your CI pipeline to lint your schema changes and enforce code quality across your team. We provide a [GitHub Action](https://github.com/supabase-community/postgres-language-server-cli-action) to setup the Postgres Language Server in your runner.

See the [Continuous Integration](/guides/continuous_integration) guide for an example.
See the [Continuous Integration](guides/continuous_integration.md) guide for an example.


2 changes: 1 addition & 1 deletion docs/guides/suppressions.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,5 +90,5 @@ alter table tasks drop column created_at;

## Notes

- Trying to suppress diagnostics that have already been disabled in your [configuration file](/#configuration) will show a warning.
- Trying to suppress diagnostics that have already been disabled in your [configuration file](../configuration.md) will show a warning.
- Trying to suppress diagnostics that don't haven't been raised will also show a warning.
10 changes: 5 additions & 5 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ The language server is built on Postgres' own parser `libpg_query` to ensure 100

The following features are available today:

- [Syntax Diagnostics](/features/syntax_diagnostics)
- [Linting](/features/linting)
- [Type Checking](/features/type_checking)
- [PL/pgSQL Support](/features/plpgsql)
- [Autocompletion & Hover](/features/editor_features)
- [Syntax Diagnostics](features/syntax_diagnostics.md)
- [Linting](features/linting.md)
- [Type Checking](features/type_checking.md)
- [PL/pgSQL Support](features/plpgsql.md)
- [Autocompletion & Hover](features/editor_features.md)

For future plans and opportunities to contribute, please check out the issues and discussions. Any contributions are welcome!
66 changes: 33 additions & 33 deletions docs/reference/rule_sources.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,39 +6,39 @@ _No exclusive rules available._
### Eugene
| Eugene Rule Name | Rule Name |
| ---- | ---- |
| [E11](https://kaveland.no/eugene/hints/E11/index.html) |[addSerialColumn](../rules/add-serial-column) |
| [E3](https://kaveland.no/eugene/hints/E3/index.html) |[preferJsonb](../rules/prefer-jsonb) |
| [E4](https://kaveland.no/eugene/hints/E4/index.html) |[runningStatementWhileHoldingAccessExclusive](../rules/running-statement-while-holding-access-exclusive) |
| [E9](https://kaveland.no/eugene/hints/E9/index.html) |[lockTimeoutWarning](../rules/lock-timeout-warning) |
| [W12](https://kaveland.no/eugene/hints/W12/index.html) |[multipleAlterTable](../rules/multiple-alter-table) |
| [W13](https://kaveland.no/eugene/hints/W13/index.html) |[creatingEnum](../rules/creating-enum) |
| [E11](https://kaveland.no/eugene/hints/E11/index.html) |[addSerialColumn](./rules/add-serial-column.md) |
| [E3](https://kaveland.no/eugene/hints/E3/index.html) |[preferJsonb](./rules/prefer-jsonb.md) |
| [E4](https://kaveland.no/eugene/hints/E4/index.html) |[runningStatementWhileHoldingAccessExclusive](./rules/running-statement-while-holding-access-exclusive.md) |
| [E9](https://kaveland.no/eugene/hints/E9/index.html) |[lockTimeoutWarning](./rules/lock-timeout-warning.md) |
| [W12](https://kaveland.no/eugene/hints/W12/index.html) |[multipleAlterTable](./rules/multiple-alter-table.md) |
| [W13](https://kaveland.no/eugene/hints/W13/index.html) |[creatingEnum](./rules/creating-enum.md) |
### Squawk
| Squawk Rule Name | Rule Name |
| ---- | ---- |
| [adding-field-with-default](https://squawkhq.com/docs/adding-field-with-default) |[addingFieldWithDefault](../rules/adding-field-with-default) |
| [adding-foreign-key-constraint](https://squawkhq.com/docs/adding-foreign-key-constraint) |[addingForeignKeyConstraint](../rules/adding-foreign-key-constraint) |
| [adding-not-null-field](https://squawkhq.com/docs/adding-not-null-field) |[addingNotNullField](../rules/adding-not-null-field) |
| [adding-required-field](https://squawkhq.com/docs/adding-required-field) |[addingRequiredField](../rules/adding-required-field) |
| [adding-serial-primary-key-field](https://squawkhq.com/docs/adding-serial-primary-key-field) |[addingPrimaryKeyConstraint](../rules/adding-primary-key-constraint) |
| [ban-char-field](https://squawkhq.com/docs/ban-char-field) |[banCharField](../rules/ban-char-field) |
| [ban-concurrent-index-creation-in-transaction](https://squawkhq.com/docs/ban-concurrent-index-creation-in-transaction) |[banConcurrentIndexCreationInTransaction](../rules/ban-concurrent-index-creation-in-transaction) |
| [ban-drop-column](https://squawkhq.com/docs/ban-drop-column) |[banDropColumn](../rules/ban-drop-column) |
| [ban-drop-database](https://squawkhq.com/docs/ban-drop-database) |[banDropDatabase](../rules/ban-drop-database) |
| [ban-drop-not-null](https://squawkhq.com/docs/ban-drop-not-null) |[banDropNotNull](../rules/ban-drop-not-null) |
| [ban-drop-table](https://squawkhq.com/docs/ban-drop-table) |[banDropTable](../rules/ban-drop-table) |
| [ban-truncate-cascade](https://squawkhq.com/docs/ban-truncate-cascade) |[banTruncateCascade](../rules/ban-truncate-cascade) |
| [changing-column-type](https://squawkhq.com/docs/changing-column-type) |[changingColumnType](../rules/changing-column-type) |
| [constraint-missing-not-valid](https://squawkhq.com/docs/constraint-missing-not-valid) |[constraintMissingNotValid](../rules/constraint-missing-not-valid) |
| [disallow-unique-constraint](https://squawkhq.com/docs/disallow-unique-constraint) |[disallowUniqueConstraint](../rules/disallow-unique-constraint) |
| [prefer-big-int](https://squawkhq.com/docs/prefer-big-int) |[preferBigInt](../rules/prefer-big-int) |
| [prefer-bigint-over-int](https://squawkhq.com/docs/prefer-bigint-over-int) |[preferBigintOverInt](../rules/prefer-bigint-over-int) |
| [prefer-bigint-over-smallint](https://squawkhq.com/docs/prefer-bigint-over-smallint) |[preferBigintOverSmallint](../rules/prefer-bigint-over-smallint) |
| [prefer-identity](https://squawkhq.com/docs/prefer-identity) |[preferIdentity](../rules/prefer-identity) |
| [prefer-robust-stmts](https://squawkhq.com/docs/prefer-robust-stmts) |[preferRobustStmts](../rules/prefer-robust-stmts) |
| [prefer-text-field](https://squawkhq.com/docs/prefer-text-field) |[preferTextField](../rules/prefer-text-field) |
| [prefer-timestamptz](https://squawkhq.com/docs/prefer-timestamptz) |[preferTimestamptz](../rules/prefer-timestamptz) |
| [renaming-column](https://squawkhq.com/docs/renaming-column) |[renamingColumn](../rules/renaming-column) |
| [renaming-table](https://squawkhq.com/docs/renaming-table) |[renamingTable](../rules/renaming-table) |
| [require-concurrent-index-creation](https://squawkhq.com/docs/require-concurrent-index-creation) |[requireConcurrentIndexCreation](../rules/require-concurrent-index-creation) |
| [require-concurrent-index-deletion](https://squawkhq.com/docs/require-concurrent-index-deletion) |[requireConcurrentIndexDeletion](../rules/require-concurrent-index-deletion) |
| [transaction-nesting](https://squawkhq.com/docs/transaction-nesting) |[transactionNesting](../rules/transaction-nesting) |
| [adding-field-with-default](https://squawkhq.com/docs/adding-field-with-default) |[addingFieldWithDefault](./rules/adding-field-with-default.md) |
| [adding-foreign-key-constraint](https://squawkhq.com/docs/adding-foreign-key-constraint) |[addingForeignKeyConstraint](./rules/adding-foreign-key-constraint.md) |
| [adding-not-null-field](https://squawkhq.com/docs/adding-not-null-field) |[addingNotNullField](./rules/adding-not-null-field.md) |
| [adding-required-field](https://squawkhq.com/docs/adding-required-field) |[addingRequiredField](./rules/adding-required-field.md) |
| [adding-serial-primary-key-field](https://squawkhq.com/docs/adding-serial-primary-key-field) |[addingPrimaryKeyConstraint](./rules/adding-primary-key-constraint.md) |
| [ban-char-field](https://squawkhq.com/docs/ban-char-field) |[banCharField](./rules/ban-char-field.md) |
| [ban-concurrent-index-creation-in-transaction](https://squawkhq.com/docs/ban-concurrent-index-creation-in-transaction) |[banConcurrentIndexCreationInTransaction](./rules/ban-concurrent-index-creation-in-transaction.md) |
| [ban-drop-column](https://squawkhq.com/docs/ban-drop-column) |[banDropColumn](./rules/ban-drop-column.md) |
| [ban-drop-database](https://squawkhq.com/docs/ban-drop-database) |[banDropDatabase](./rules/ban-drop-database.md) |
| [ban-drop-not-null](https://squawkhq.com/docs/ban-drop-not-null) |[banDropNotNull](./rules/ban-drop-not-null.md) |
| [ban-drop-table](https://squawkhq.com/docs/ban-drop-table) |[banDropTable](./rules/ban-drop-table.md) |
| [ban-truncate-cascade](https://squawkhq.com/docs/ban-truncate-cascade) |[banTruncateCascade](./rules/ban-truncate-cascade.md) |
| [changing-column-type](https://squawkhq.com/docs/changing-column-type) |[changingColumnType](./rules/changing-column-type.md) |
| [constraint-missing-not-valid](https://squawkhq.com/docs/constraint-missing-not-valid) |[constraintMissingNotValid](./rules/constraint-missing-not-valid.md) |
| [disallow-unique-constraint](https://squawkhq.com/docs/disallow-unique-constraint) |[disallowUniqueConstraint](./rules/disallow-unique-constraint.md) |
| [prefer-big-int](https://squawkhq.com/docs/prefer-big-int) |[preferBigInt](./rules/prefer-big-int.md) |
| [prefer-bigint-over-int](https://squawkhq.com/docs/prefer-bigint-over-int) |[preferBigintOverInt](./rules/prefer-bigint-over-int.md) |
| [prefer-bigint-over-smallint](https://squawkhq.com/docs/prefer-bigint-over-smallint) |[preferBigintOverSmallint](./rules/prefer-bigint-over-smallint.md) |
| [prefer-identity](https://squawkhq.com/docs/prefer-identity) |[preferIdentity](./rules/prefer-identity.md) |
| [prefer-robust-stmts](https://squawkhq.com/docs/prefer-robust-stmts) |[preferRobustStmts](./rules/prefer-robust-stmts.md) |
| [prefer-text-field](https://squawkhq.com/docs/prefer-text-field) |[preferTextField](./rules/prefer-text-field.md) |
| [prefer-timestamptz](https://squawkhq.com/docs/prefer-timestamptz) |[preferTimestamptz](./rules/prefer-timestamptz.md) |
| [renaming-column](https://squawkhq.com/docs/renaming-column) |[renamingColumn](./rules/renaming-column.md) |
| [renaming-table](https://squawkhq.com/docs/renaming-table) |[renamingTable](./rules/renaming-table.md) |
| [require-concurrent-index-creation](https://squawkhq.com/docs/require-concurrent-index-creation) |[requireConcurrentIndexCreation](./rules/require-concurrent-index-creation.md) |
| [require-concurrent-index-deletion](https://squawkhq.com/docs/require-concurrent-index-deletion) |[requireConcurrentIndexDeletion](./rules/require-concurrent-index-deletion.md) |
| [transaction-nesting](https://squawkhq.com/docs/transaction-nesting) |[transactionNesting](./rules/transaction-nesting.md) |
Loading