Files
mal/docs/superpowers/plans/2026-05-06-project-structure-cleanup.md

151 lines
3.6 KiB
Markdown

# Project Structure Cleanup Implementation Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Standardize the Go project structure, consolidate database packages, and remove redundant files to improve maintainability and idiomatic code patterns.
**Architecture:**
1. Consolidate all database-related code into `internal/db` with the package name `db`.
2. Remove the `internal/db/sqlite` sub-package and move its contents to `internal/db`.
3. Update `sqlc.yaml` and regenerate code.
4. Clean up the `tmp/scripts/` directory.
5. Update all imports throughout the project.
**Tech Stack:** Go, sqlc, Bun
---
### Task 1: Clean up tmp/scripts
**Files:**
- Delete: `tmp/scripts/*.go`
- [ ] **Step 1: Delete redundant scripts**
Run: `rm tmp/scripts/*.go`
- [ ] **Step 2: Commit cleanup**
```bash
git add tmp/scripts/
git commit -m "chore: remove redundant scripts"
```
### Task 2: Standardize internal/db Package and Flatten Structure
**Files:**
- Modify: `sqlc.yaml`
- Move: `internal/db/sqlite/sqlite.go` -> `internal/db/sqlite.go`
- Modify: `internal/db/*.go` (generated and manual)
- [ ] **Step 1: Update sqlc configuration**
Modify `sqlc.yaml`:
```yaml
version: "2"
sql:
- engine: "sqlite"
queries: "internal/db/queries.sql"
schema: "migrations/"
gen:
go:
package: "db"
out: "internal/db"
emit_json_tags: true
emit_prepared_queries: false
emit_interface: true
emit_exact_table_names: false
```
- [ ] **Step 2: Regenerate sqlc code**
Run: `sqlc generate`
- [ ] **Step 3: Move and update sqlite.go**
Run: `mv internal/db/sqlite/sqlite.go internal/db/sqlite.go && rm -rf internal/db/sqlite`
Modify `internal/db/sqlite.go`:
```go
package db
import (
"database/sql"
"fmt"
"os"
"path/filepath"
_ "github.com/mattn/go-sqlite3"
)
// ... existing functions, update return types to use local db package if needed
```
- [ ] **Step 4: Update package names in manual files**
Modify `internal/db/helpers.go` and `internal/db/migrate.go` to use `package db`.
- [ ] **Step 5: Commit database structural changes**
```bash
git add internal/db/ sqlc.yaml
git commit -m "refactor: consolidate db package and flatten structure"
```
### Task 3: Update Global Imports
**Files:**
- Modify: All files importing `mal/internal/db` or `mal/internal/db/sqlite`
- [ ] **Step 1: Replace imports and qualifiers**
Use `sed` or `edit` to update all imports:
- `database "mal/internal/db"` -> `"mal/internal/db"`
- `"mal/internal/db"` -> `"mal/internal/db"` (ensure it's used as `db.`)
- `"mal/internal/db/sqlite"` -> `"mal/internal/db"`
- [ ] **Step 2: Update code references**
Replace `database.` and `sqlite.` with `db.` globally where applicable.
- [ ] **Step 3: Verify build**
Run: `go build ./...`
Expected: PASS
- [ ] **Step 4: Commit import updates**
```bash
git add .
git commit -m "refactor: update imports to use new db package"
```
### Task 4: Clean dist/ and Verify Build
**Files:**
- Modify: `package.json` (if needed)
- Clean: `dist/`
- [ ] **Step 1: Clean dist directory**
Run: `rm -rf dist/*`
- [ ] **Step 2: Run frontend build**
Run: `bun run build:assets`
- [ ] **Step 3: Verify dist structure**
Check if `dist/static/static` still exists. If so, investigate `bun build` command in `package.json`.
- [ ] **Step 4: Final verification**
Run: `go build ./... && bun run typecheck`
Expected: PASS
- [ ] **Step 5: Commit build fixes**
```bash
git add .
git commit -m "build: clean dist and verify assets"
```