Refactor for use with Cookiecutter
Signed-off-by: AKP <tom@tdpain.net>
This commit is contained in:
parent
d78975a540
commit
5f7c2f42ec
18 changed files with 41 additions and 21 deletions
18
README.md
18
README.md
|
@ -1,15 +1,15 @@
|
||||||
# go-fiber-sql
|
# cookiecutter-go-web-app
|
||||||
|
|
||||||
A project template for a web application based on the Fiber web framework. This incorporates:
|
A project template for a web application written in Go based on the [Fiber](https://github.com/gofiber/fiber) web framework. This incorporates:
|
||||||
|
|
||||||
* Error handling with `github.com/rs/zerlog` and `github.com/pkg/errors`
|
* Error handling with `github.com/rs/zerlog` and `github.com/pkg/errors`
|
||||||
* Database migrations (requires Go v1.18 or newer)
|
* Database migrations
|
||||||
* Tools to load YAML-based configurations
|
* Tools to load YAML-based configurations
|
||||||
|
|
||||||
## To use this template:
|
To use this template, you must have [Cookiecutter](https://github.com/cookiecutter/cookiecutter) installed.
|
||||||
|
|
||||||
* Add a `LICENSE`
|
```
|
||||||
* Update the package name in `go.mod` and in the imports within the application
|
python3 -m pip install --user --upgrade cookiecutter
|
||||||
* Rename the `application` directory to your application's name
|
|
||||||
* Define your database DSN and driver
|
cookiecutter https://github.com/codemicro/cookiecutter-go-web-app.git
|
||||||
* Write some code and make an app, I guess?
|
```
|
12
cookiecutter.json
Normal file
12
cookiecutter.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"projectName": "Hello World",
|
||||||
|
"projectDescription": "This is a web application that says hello world.",
|
||||||
|
|
||||||
|
"projectSlug": "helloWorld",
|
||||||
|
"mainPackageName": "{{ cookiecutter.projectSlug }}",
|
||||||
|
"modulePath": "github.com/codemicro/{{ cookiecutter.projectSlug }}",
|
||||||
|
|
||||||
|
"minimumGoVersion": "1.19",
|
||||||
|
|
||||||
|
"__mainPackagePath": "{{ cookiecutter.modulePath }}/{{ cookiecutter.mainPackageName }}"
|
||||||
|
}
|
3
hooks/post_gen_project.sh
Normal file
3
hooks/post_gen_project.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
go fmt ./... > /dev/null
|
5
{{cookiecutter.projectSlug}}/README.md
Normal file
5
{{cookiecutter.projectSlug}}/README.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# {{ cookiecutter.projectName }}
|
||||||
|
|
||||||
|
*{{ cookiecutter.projectDescription }}*
|
||||||
|
|
||||||
|
---
|
|
@ -1,6 +1,6 @@
|
||||||
module github.com/codemicro/go-fiber-sql
|
module {{ cookiecutter.modulePath }}
|
||||||
|
|
||||||
go 1.18
|
go {{ cookiecutter.minimumGoVersion }}
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/gofiber/fiber/v2 v2.35.0
|
github.com/gofiber/fiber/v2 v2.35.0
|
|
@ -3,7 +3,6 @@ package db
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"github.com/codemicro/go-fiber-sql/application/config"
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
|
@ -11,6 +10,7 @@ import (
|
||||||
"github.com/uptrace/bun/dialect/sqlitedialect"
|
"github.com/uptrace/bun/dialect/sqlitedialect"
|
||||||
"github.com/uptrace/bun/extra/bundebug"
|
"github.com/uptrace/bun/extra/bundebug"
|
||||||
"time"
|
"time"
|
||||||
|
"{{cookiecutter.__mainPackagePath}}/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DB struct {
|
type DB struct {
|
|
@ -3,11 +3,11 @@ package db
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
_ "embed"
|
_ "embed"
|
||||||
"github.com/codemicro/go-fiber-sql/application/db/migrations"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
"github.com/uptrace/bun/migrate"
|
"github.com/uptrace/bun/migrate"
|
||||||
"time"
|
"time"
|
||||||
|
"{{cookiecutter.__mainPackagePath}}/db/migrations"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (db *DB) Migrate() error {
|
func (db *DB) Migrate() error {
|
|
@ -2,9 +2,9 @@ package migrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/codemicro/go-fiber-sql/application/db/models"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/uptrace/bun"
|
"github.com/uptrace/bun"
|
||||||
|
"{{cookiecutter.__mainPackagePath}}/db/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
|
@ -1,12 +1,12 @@
|
||||||
package endpoints
|
package endpoints
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/codemicro/go-fiber-sql/application/config"
|
|
||||||
"github.com/codemicro/go-fiber-sql/application/db"
|
|
||||||
"github.com/codemicro/go-fiber-sql/application/paths"
|
|
||||||
"github.com/codemicro/go-fiber-sql/application/util"
|
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"time"
|
"time"
|
||||||
|
"{{cookiecutter.__mainPackagePath}}/config"
|
||||||
|
"{{cookiecutter.__mainPackagePath}}/db"
|
||||||
|
"{{cookiecutter.__mainPackagePath}}/paths"
|
||||||
|
"{{cookiecutter.__mainPackagePath}}/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Endpoints struct {
|
type Endpoints struct {
|
|
@ -2,15 +2,15 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/codemicro/go-fiber-sql/application/config"
|
|
||||||
"github.com/codemicro/go-fiber-sql/application/db"
|
|
||||||
"github.com/codemicro/go-fiber-sql/application/endpoints"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"strconv"
|
"strconv"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
"{{cookiecutter.__mainPackagePath}}/config"
|
||||||
|
"{{cookiecutter.__mainPackagePath}}/db"
|
||||||
|
"{{cookiecutter.__mainPackagePath}}/endpoints"
|
||||||
)
|
)
|
||||||
|
|
||||||
func run() error {
|
func run() error {
|
Loading…
Add table
Add a link
Reference in a new issue