add db migrations, add taskfile
This commit is contained in:
parent
33235d8f1e
commit
b1f6175226
6 changed files with 127 additions and 0 deletions
35
Taskfile.yml
Normal file
35
Taskfile.yml
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
version: 3
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
run:
|
||||||
|
cmds:
|
||||||
|
- air --build.include_ext "go,css,ts,templ"
|
||||||
|
|
||||||
|
tool-install:
|
||||||
|
desc: Install needed CLI tools
|
||||||
|
cmds:
|
||||||
|
- go install github.com/a-h/templ/cmd/templ@latest
|
||||||
|
- go install github.com/spf13/cobra-cli@latest
|
||||||
|
- go install github.com/air-verse/air@latest
|
||||||
|
- go get
|
||||||
|
- bun install
|
||||||
|
tool-upgrade:
|
||||||
|
desc: Upgrade CLI tools
|
||||||
|
cmds:
|
||||||
|
- go install github.com/a-h/templ/cmd/templ@latest
|
||||||
|
- go install github.com/spf13/cobra-cli@latest
|
||||||
|
- go install github.com/air-verse/air@latest
|
||||||
|
|
||||||
|
make-handler:
|
||||||
|
desc: Generates a handler
|
||||||
|
cmds:
|
||||||
|
- go run -tags dev *.go generate handler
|
||||||
|
make-migration:
|
||||||
|
desc: Generates a migration
|
||||||
|
cmds:
|
||||||
|
- go run -tags dev *.go generate migration
|
||||||
|
|
||||||
|
cloc:
|
||||||
|
desc: Lines of Code of project (for fun)
|
||||||
|
cmds:
|
||||||
|
- cloc --exclude-dir=node_modules,dist,playwright-report,.git,build,.idea,.vscode --exclude-ext=md --not-match-f='.*_templ\.go' .
|
75
cmd/migration.go
Normal file
75
cmd/migration.go
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
//go:build dev
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package cmd
|
||||||
|
Copyright © 2024 Shane C. <shane@scaffoe.com>
|
||||||
|
*/
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/jackc/pgx/v5/pgxpool"
|
||||||
|
"github.com/jackc/pgx/v5/stdlib"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
"github.com/uptrace/bun"
|
||||||
|
"github.com/uptrace/bun/dialect/pgdialect"
|
||||||
|
"github.com/uptrace/bun/migrate"
|
||||||
|
"gitlab.com/omnibill/tui/textinput"
|
||||||
|
"log"
|
||||||
|
"omnibill.net/omnibill/migrations"
|
||||||
|
"omnibill.net/omnibill/shared"
|
||||||
|
"strings"
|
||||||
|
"unicode"
|
||||||
|
)
|
||||||
|
|
||||||
|
// migrationCmd represents the migration command
|
||||||
|
var migrationCmd = &cobra.Command{
|
||||||
|
Use: "migration",
|
||||||
|
Short: "Generates a migration",
|
||||||
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
|
||||||
|
migrationName, err := textinput.New(textinput.InputData{
|
||||||
|
Question: "Name of Migration?",
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
dsn := shared.GetPostgresURI()
|
||||||
|
|
||||||
|
config, err := pgxpool.ParseConfig(dsn)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
pool, err := pgxpool.NewWithConfig(context.Background(), config)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
sqldb := stdlib.OpenDBFromPool(pool)
|
||||||
|
db := bun.NewDB(sqldb, pgdialect.New())
|
||||||
|
|
||||||
|
migrator := migrate.NewMigrator(db, migrations.Migrations)
|
||||||
|
|
||||||
|
name := strings.ToLower(strings.ReplaceAll(removeSymbols(*migrationName), " ", "_"))
|
||||||
|
_, err = migrator.CreateGoMigration(context.Background(), name)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
generateCmd.AddCommand(migrationCmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
func removeSymbols(s string) string {
|
||||||
|
var result string
|
||||||
|
for _, char := range s {
|
||||||
|
if unicode.IsLetter(char) || unicode.IsDigit(char) {
|
||||||
|
result += string(char)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
1
go.mod
1
go.mod
|
@ -53,6 +53,7 @@ require (
|
||||||
github.com/subosito/gotenv v1.6.0 // indirect
|
github.com/subosito/gotenv v1.6.0 // indirect
|
||||||
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect
|
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect
|
||||||
github.com/ulikunitz/xz v0.5.12 // indirect
|
github.com/ulikunitz/xz v0.5.12 // indirect
|
||||||
|
github.com/uptrace/bun/dialect/pgdialect v1.2.5 // indirect
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasthttp v1.57.0 // indirect
|
github.com/valyala/fasthttp v1.57.0 // indirect
|
||||||
github.com/valyala/tcplisten v1.0.0 // indirect
|
github.com/valyala/tcplisten v1.0.0 // indirect
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -110,6 +110,8 @@ github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
|
||||||
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||||
github.com/uptrace/bun v1.2.5 h1:gSprL5xiBCp+tzcZHgENzJpXnmQwRM/A6s4HnBF85mc=
|
github.com/uptrace/bun v1.2.5 h1:gSprL5xiBCp+tzcZHgENzJpXnmQwRM/A6s4HnBF85mc=
|
||||||
github.com/uptrace/bun v1.2.5/go.mod h1:vkQMS4NNs4VNZv92y53uBSHXRqYyJp4bGhMHgaNCQpY=
|
github.com/uptrace/bun v1.2.5/go.mod h1:vkQMS4NNs4VNZv92y53uBSHXRqYyJp4bGhMHgaNCQpY=
|
||||||
|
github.com/uptrace/bun/dialect/pgdialect v1.2.5 h1:dWLUxpjTdglzfBks2x+U2WIi+nRVjuh7Z3DLYVFswJk=
|
||||||
|
github.com/uptrace/bun/dialect/pgdialect v1.2.5/go.mod h1:stwnlE8/6x8cuQ2aXcZqwDK/d+6jxgO3iQewflJT6C4=
|
||||||
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||||
github.com/valyala/fasthttp v1.57.0 h1:Xw8SjWGEP/+wAAgyy5XTvgrWlOD1+TxbbvNADYCm1Tg=
|
github.com/valyala/fasthttp v1.57.0 h1:Xw8SjWGEP/+wAAgyy5XTvgrWlOD1+TxbbvNADYCm1Tg=
|
||||||
|
|
5
migrations/main.go
Normal file
5
migrations/main.go
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
package migrations
|
||||||
|
|
||||||
|
import "github.com/uptrace/bun/migrate"
|
||||||
|
|
||||||
|
var Migrations = migrate.NewMigrations()
|
9
web/assets/js/main.ts
Normal file
9
web/assets/js/main.ts
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
import Alpine from 'alpinejs';
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface Window { Alpine: typeof Alpine; }
|
||||||
|
}
|
||||||
|
|
||||||
|
window.Alpine = Alpine;
|
||||||
|
|
||||||
|
window.Alpine.start();
|
Loading…
Reference in a new issue