coder / coder/internal

Add code-generation & linter for system notification templates

Aperta
#36 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
project/notifications
Lingua principale
Nessun dato sulla lingua
Stelle
3
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Ideally this code generation would produced a file called `coderd/notifications/system_templates_generated.go`:

```go
// Workspace Events
var (
TemplateWorkspaceDeleted = uuid.MustParse("f517da0b-cdc9-410f-ab89-a86107c420ed")
...
)

func AllSystemTemplates() []uuid.UUID {
return {
TemplateWorkspaceDeleted,
...
}
}

// GetSystemTemplateByID returns the static contents of the requested system notification template.
func GetSystemTemplateByID(id uuid.UUID) database.NotificationTemplate {
switch id {
case TemplateWorkspaceDeleted:
return database.NotificationTemplate {
id: id,
name: "Workspace Deleted",
...
}
...
}
}
```

_NOTE: this must ONLY consider templates of `kind=system`_.

We need this code-generation to solve a few problems:

1. Tests that currently reference the `notification_templates` table won't need to use a real pg db anymore, speeding up tests
2. `AllSystemTemplates()` will allow us to determine if we're missing any test cases
3. We could generate golden test files to validate that a template produces precisely identical HTML + plaintext outputs for given inputs

Over and above this, we'll need a linter to validate that this new file is not out-of-sync with the database after migrations have run.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Start by locating the notification_templates table, its migrations, and the existing system-template code. Define how the generator produces coderd/notifications/system_templates_generated.go and how generated golden tests fit the stated goals. Done means system templates only are generated, and a linter detects when the generated file is out of sync after migrations.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
go, postgres
Ambito
backend, databases, tooling
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
30/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.