Repository: Debugger-Demons/whoknows
Pull request #38: Rust linter branch
Author: login: pevinskevin
Created: 2025-03-26T16:15:52Z | Merged: 2025-03-31T09:12:19Z

# Pull Request

I've created a workflow for automated linting and formatting check of PRs to "development".

## Changes
- [ x] Code changes
- [ ] Configuration changes 
- [ ] Documentation updates
- [ ] Infrastructure changes

## Description
[Replace with clear description of changes and motivation]

Related issue: #

## Quality Assurance
- [ ] Tests added/updated
- [ ] Documentation updated
- [ ] Changes tested locally
- [ ] Security implications considered

## Deployment
- [ x] No breaking changes
- [ ] Database migrations required
- [ ] Environment variables added
- [ ] Infrastructure dependencies updated

## Monitoring & Observability 
- [ ] Logging added/updated
- [ ] Metrics added/updated
- [ ] Alerts configured (if needed)

## Reviewers
- [ ] Code review completed
- [ ] Architecture review completed (if needed)
- [ ] Security review completed (if needed)

## Additional Notes
[deployment instructions, rollback plan, etc]

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Launched backend service components to support enhanced web operations and efficient database interactions.

- **Chores**
  - Rolled out an automated quality process to uphold high coding standards.
  - Upgraded core dependencies to bolster performance and system reliability.
  - Introduced a new Rust project configuration for improved dependency management.
  - Updated the `sqlx` dependency version for enhanced database capabilities.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/.github/workflows/rust-linter-and-formatter.yml b/.github/workflows/rust-linter-and-formatter.yml
new file mode 100644
index 00000000..53445063
--- /dev/null
+++ b/.github/workflows/rust-linter-and-formatter.yml
@@ -0,0 +1,42 @@
+name: Rust Linter
+
+on:
+  pull_request:
+    branches:
+      - development  
+  workflow_dispatch:   
+
+# Make sure CI fails on all warnings, including Clippy lints
+env:
+  RUSTFLAGS: "-Dwarnings"
+
+jobs:
+  lint-rust:
+    name: Lint Rust Code
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v4
+        
+      - name: Run Clippy
+        run: cargo clippy --all-targets --all-features
+        continue-on-error: true
+
+      - name: Install clippy-reviewdog-filter
+        run: |
+          curl -L -o /tmp/clippy-reviewdog-filter https://github.com/qnighy/clippy-reviewdog-filter/releases/latest/download/clippy-reviewdog-filter-x86_64-unknown-linux-gnu
+          chmod +x /tmp/clippy-reviewdog-filter
+          
+      - name: Run reviewdog with clippy-reviewdog-filter
+        uses: reviewdog/action-setup@v1
+        with:
+          reviewdog_version: latest
+          
+      - name: Report Clippy results with reviewdog
+        env:
+          REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+          cat clippy-output.txt | /tmp/clippy-reviewdog-filter | reviewdog -f=rdjson -reporter=github-pr-review
+
+      
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 00000000..a7925aa9
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,14 @@
+[package]
+name = "backend"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+actix-web = "4.4.0"
+actix-cors = "0.7.0"
+serde = { version = "1.0", features = ["derive"] }
+serde_json = "1.0"
+sqlx = { version = "0.8.1", features = ["runtime-tokio", "sqlite"] }
+tokio = { version = "1.0", features = ["full"] }
+env_logger = "0.10.0"
+log = "0.4"


Reviews:
user: login: AlekOmOm
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-03-29T10:57:46Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 3**

<details>
<summary>🧹 Nitpick comments (5)</summary><blockquote>

<details>
<summary>.github/workflows/rust-linter-and-formatter.yml (5)</summary><blockquote>

`3-8`: **Workflow Triggers and Formatting Issues**  
The workflow is configured to trigger on pull requests to the `development` branch and via manual dispatch. However, YAMLlint identified trailing spaces on lines 6 and 7. Please remove the extra spaces.  
```diff
-      - development  
+      - development
-  workflow_dispatch:   
+  workflow_dispatch:
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 6-6: trailing spaces

(trailing-spaces)

---

[error] 7-7: trailing spaces

(trailing-spaces)

</details>

</details>

---

`18-21`: **Checkout Step is Configured Correctly**  
The job checks out the repository code using `actions/checkout@v4`, which is appropriate for ensuring the latest code is available for linting.  
*Note:* Line 21 has trailing whitespace that should be removed.  
```diff
-        
+        
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 21-21: trailing spaces

(trailing-spaces)

</details>

</details>

---

`26-30`: **Installation of clippy-reviewdog-filter is Handled Neatly**  
The download and permission setting for `clippy-reviewdog-filter` is straightforward and effective.  
*Note:* Remove trailing whitespace on line 30.  
```diff
-           
+           
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 30-30: trailing spaces

(trailing-spaces)

</details>

</details>

---

`31-35`: **Reviewdog Setup Action is Configured Correctly**  
The configuration for setting up reviewdog via `reviewdog/action-setup@v1` is clear.  
*Note:* Line 35 contains trailing whitespace and should be cleaned up.  
```diff
-           
+           
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 35-35: trailing spaces

(trailing-spaces)

</details>

</details>

---

`42-42`: **Remove Extraneous Trailing Whitespace**  
Line 42 contains trailing whitespace. Please remove it to ensure the YAML file is clean and adheres to linting guidelines.  
```diff
-       
+       
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 42-42: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between e092fb166b1de5ba87f0874dc2f86e3edf674ac2 and 6623fb13aa92c3e355d5a291db363dc51e9eec3b.

</details>

<details>
<summary>📒 Files selected for processing (4)</summary>

* `.github/workflows/rust-linter-and-formatter.yml` (1 hunks)
* `Cargo.toml` (1 hunks)
* `src/Cargo.toml` (1 hunks)
* `src/main.rs` (2 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/rust-linter-and-formatter.yml</summary>

[error] 6-6: trailing spaces

(trailing-spaces)

---

[error] 7-7: trailing spaces

(trailing-spaces)

---

[error] 21-21: trailing spaces

(trailing-spaces)

---

[error] 30-30: trailing spaces

(trailing-spaces)

---

[error] 35-35: trailing spaces

(trailing-spaces)

---

[error] 42-42: trailing spaces

(trailing-spaces)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (7)</summary><blockquote>

<details>
<summary>src/Cargo.toml (1)</summary>

`11-11`: <details>
<summary>❓ Verification inconclusive</summary>

**Verify compatibility and security for the updated `sqlx` version.**

Updating from `0.7` to `0.8.1` is significant. Please ensure that upstream code remains compatible with the new version and that no security advisories apply.  


Below is a script you can run to check if any known vulnerabilities affect `sqlx` `0.8.1`:

---

🏁 Script executed:

```shell
#!/bin/bash
# Description: Check for vulnerabilities with sqlx 0.8.1 using cargo-audit
# This will clone your repo and then run cargo audit to scan for known vulnerabilities.

# Install cargo-audit if missing
cargo install cargo-audit

# Audit the repository
cargo audit
```

Length of output: 233

---



</details>

**Action Required: Verify Compatibility and Security in a Proper Environment**

The vulnerability scan using `cargo audit` did not execute successfully because the Rust toolchain (i.e. `cargo`) wasn’t available in the current environment. As a result, the security verification for `sqlx` 0.8.1 remains inconclusive. Please verify the following manually in an environment with Rust installed:

- **Security**: Run `cargo audit` to ensure no known vulnerabilities affect `sqlx` 0.8.1.
- **Compatibility**: Confirm that the upgrade from `0.7` to `0.8.1` does not introduce breaking changes in upstream code. Check the official [sqlx changelog](https://github.com/LaunchBadge/sqlx/blob/main/CHANGELOG.md) for any potential breaking changes.

Once verified in the proper setup, update the review accordingly.

</details>
<details>
<summary>Cargo.toml (1)</summary>

`1-14`: **New Cargo.toml for the `backend` package looks good!**

All specified dependencies seem appropriate for a Rust web backend. No issues spotted.

</details>
<details>
<summary>.github/workflows/rust-linter-and-formatter.yml (5)</summary>

`1-2`: **Workflow Name Declaration is Clear**  
The workflow is aptly named "Rust Linter," which immediately communicates its purpose.

---

`9-12`: **RUSTFLAGS Environment Variable Set for Strict Linting**  
Setting `RUSTFLAGS` to `"-Dwarnings"` enforces that all warnings are treated as errors—which is an excellent way to maintain high code quality.

---

`13-17`: **Job Definition is Well-Structured**  
The `lint-rust` job is correctly defined to run on `ubuntu-latest`, ensuring that the linting runs in a consistent environment.

---

`22-25`: **Clippy Linting Step is Set Up Properly**  
Running `cargo clippy --all-targets --all-features` with `continue-on-error: true` allows comprehensive linting while not aborting the workflow immediately on failures.

---

`36-41`: **Reporting Clippy Results Through Reviewdog is Integrated Well**  
Piping the Clippy output through `clippy-reviewdog-filter` into reviewdog to report issues in the GitHub pull request is an excellent automated review process.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-31T08:47:21Z

Review comments:
diff_hunk: @@ -1,13 +1,15 @@
 use actix_web::{get, post, App, HttpResponse, HttpServer, Responder};
 use actix_cors::Cors;
 
-const HOST_NAME: &str = "0.0.0.0";
+cont HOST_NAME: &str = "0.0.0.0";
path: src/main.rs
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Fix the `const` keyword typo.**

Replacing `cont` with `const` is essential to prevent a compilation error:


```diff
-cont HOST_NAME: &str = "0.0.0.0";
+const HOST_NAME: &str = "0.0.0.0";
```


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

`````suggestion
const HOST_NAME: &str = "0.0.0.0";
`````

</details>

<!-- suggestion_end -->

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-31T08:47:21Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1,13 +1,15 @@
 use actix_web::{get, post, App, HttpResponse, HttpServer, Responder};
 use actix_cors::Cors;
 
-const HOST_NAME: &str = "0.0.0.0";
+cont HOST_NAME: &str = "0.0.0.0";
 const PORT: u16 = 8080;
 
 #[get("/")]
 async fn hello() -> impl Responder {
     HttpResponse::Ok().body("Hello world2!")
 }
+ 
+Hi hello find me catch me hahahhhahah;;;;
path: src/main.rs
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Remove or comment out invalid code.**

The raw text on line 12 breaks compilation. Remove it or turn it into a comment.  


```diff
-Hi hello find me catch me hahahhhahah;;;;
+// (Removed or commented out)
```


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

`````suggestion
 
// (Removed or commented out)
`````

</details>

<!-- suggestion_end -->

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-31T08:47:21Z
author_association: CONTRIBUTOR
diff_hunk: @@ -16,8 +18,7 @@ async fn search() -> impl Responder {
 
 #[get("/weather")]
 async fn weather() -> impl Responder {
-    HttpResponse::Ok().body("Get weather")
-}
+    Ht
path: src/main.rs
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Complete the HTTP response.**

“Incomplete call” causes a syntax error. Return a valid HTTP response:  


```diff
-Ht
+HttpResponse::Ok().body("Get weather")
```


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

`````suggestion
    HttpResponse::Ok().body("Get weather")
`````

</details>

<!-- suggestion_end -->

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-31T08:47:21Z
author_association: CONTRIBUTOR

PR comments:
user: login: pevinskevin
created_at: 2025-03-26T16:32:30Z
body: Bruger dette PR til at teste mit workflow. Plz leave it be for now. 
author_association: COLLABORATOR
user: login: AlekOmOm
created_at: 2025-03-27T22:38:23Z
body: heyo
"Merging is blocked
At least 1 approving review is required by reviewers with write access."

author_association: COLLABORATOR
user: login: pevinskevin
created_at: 2025-03-29T12:20:31Z
body: Hello ser, please rescind approval. Am not finished yet please ser! 🙋‍♂️
author_association: COLLABORATOR
user: login: AlekOmOm
created_at: 2025-03-30T17:43:41Z
body: i will soon approve this

looks juicy
author_association: COLLABORATOR
user: login: coderabbitai[bot]
created_at: 2025-03-31T08:43:47Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough
This pull request adds a new GitHub Actions workflow to automate Rust code linting using `cargo clippy` and `reviewdog`. It also introduces a new project configuration in a root-level `Cargo.toml` for a Rust backend with multiple dependencies. Additionally, the `sqlx` dependency version is updated in the `src/Cargo.toml` file. Finally, modifications in `src/main.rs` introduce syntax errors including an incomplete function implementation.

## Changes

| File(s)                             | Change Summary |
|-------------------------------------|----------------|
| `.github/workflows/...rust-linter-and-formatter.yml` | Added a GitHub Actions workflow to trigger linting on pull requests (to `development`) and manual runs using `cargo clippy` and `reviewdog`. |
| `Cargo.toml`                        | New project configuration for a Rust backend with dependencies: actix-web, actix-cors, serde, serde_json, sqlx, tokio, env_logger, and log. |
| `src/Cargo.toml`                    | Updated the sqlx dependency version from 0.7 to 0.8.1 while preserving its features. |
| `src/main.rs`                       | Introduced errors including an incomplete weather function implementation. |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant PR as "Pull Request"
    participant Runner as "GitHub Runner"
    participant Repo as "Repository"
    participant Clippy as "Clippy"
    participant RD as "Reviewdog"
    
    PR->>Runner: Trigger workflow on PR to development or manual run
    Runner->>Repo: Checkout repository code
    Runner->>Clippy: Run `cargo clippy` (linting)
    Clippy->>Runner: Return linting results (continue on error)
    Runner->>RD: Execute reviewdog with clippy-reviewdog-filter
    RD->>Runner: Process linting results
    Runner->>PR: Report review comments via GitHub API
```

## Poem
> I'm a bunny in the code field, hopping with delight,  
> Linting and logic in a flow, making errors take flight.  
> Dependencies updated, workflows in the mix,  
> My carrot dreams compile with every clever fix.  
> With a twitch of my nose, I celebrate these changes just right!  
> 🥕🐇

<!-- walkthrough_end -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro (Legacy)**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 8e2ed294afeae913254122c87b47879689b21c8a and 124d49b1e403a57f6372dbc6eae65db2aae6426b.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `src/main.rs` (1 hunks)

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=Debugger-Demons/whoknows&utm_content=38):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- 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 testing code 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 gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

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 using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai plan` to trigger planning for file edits and PR creation.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- 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/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: CONTRIBUTOR