Clean Architecture template for Golang services

Overview

Go Clean Template

Go Clean template

Clean Architecture template for Golang services

Go Report Card License Release codecov

Overview

The purpose of the template is to show:

  • how to organize a project and prevent it from turning into spaghetti code
  • where to store business logic so that it remains independent, clean, and extensible
  • how not to lose control when a microservice grows

Using the principles of Robert Martin (aka Uncle Bob).

Go-clean-template is created & supported by Evrone.

Content

Quick start

Local development:

# Postgres, RabbitMQ
$ make compose-up
# Run app with migrations
$ make run

Integration tests (can be run in CI):

# DB, app + migrations, integration tests
$ make compose-up-integration-test

Project structure

cmd/app/main.go

Configuration and logger initialization. Then the main function "continues" in internal/app/app.go.

config

Configuration. First, config.yml is read, then environment variables overwrite the yaml config if they match. The config structure is in the config.go. The env-required: true tag obliges you to specify a value (either in yaml, or in environment variables).

For configuration, we chose the cleanenv library. It does not have many stars on GitHub, but is simple and meets all the requirements.

Reading the config from yaml contradicts the ideology of 12 factors, but in practice, it is more convenient than reading the entire config from ENV. It is assumed that default values are in yaml, and security-sensitive variables are defined in ENV.

docs

Swagger documentation. Auto-generated by swag library. You don't need to correct anything by yourself.

integration-test

Integration tests. They are launched as a separate container, next to the application container. It is convenient to test the Rest API using go-hit.

internal/app

There is always one Run function in the app.go file, which "continues" the main function.

This is where all the main objects are created. Dependency injection occurs through the "New ..." constructors (see Dependency Injection). This technique allows us to layer the application using the Dependency Injection principle. This makes the business logic independent from other layers.

Next, we start the server and wait for signals in select for graceful completion. If app.go starts to grow, you can split it into multiple files.

For a large number of injections, wire can be used.

The migrate.go file is used for database auto migrations. It is included if an argument with the migrate tag is specified. For example:

$ go run -tags migrate ./cmd/app

internal/controller

Server handler layer (MVC controllers). The template shows 2 servers:

  • RPC (RabbitMQ as transport)
  • REST http (Gin framework)

Server routers are written in the same style:

  • Handlers are grouped by area of application (by a common basis)
  • For each group, its own router structure is created, the methods of which process paths
  • The structure of the business logic is injected into the router structure, which will be called by the handlers

internal/controller/http

Simple REST versioning. For v2, we will need to add the http/v2 folder with the same content. And in the file internal/app add the line:

handler := gin.New()
v1.NewRouter(handler, t)
v2.NewRouter(handler, t)

Instead of Gin, you can use any other http framework or even the standard net/http library.

In v1/router.go and above the handler methods, there are comments for generating swagger documentation using swag.

internal/entity

Entities of business logic (models) can be used in any layer. There can also be methods, for example, for validation.

internal/usecase

Business logic.

  • Methods are grouped by area of application (on a common basis)
  • Each group has its own structure
  • One file - one structure

Repositories, webapi, rpc, and other business logic structures are injected into business logic structures (see Dependency Injection).

internal/usecase/repo

A repository is an abstract storage (database) that business logic works with.

internal/usecase/webapi

It is an abstract web API that business logic works with. For example, it could be another microservice that business logic accesses via the REST API. The package name changes depending on the purpose.

pkg/rabbitmq

RabbitMQ RPC pattern:

  • There is no routing inside RabbitMQ
  • Exchange fanout is used, to which 1 exclusive queue is bound, this is the most productive config
  • Reconnect on the loss of connection

Dependency Injection

In order to remove the dependence of business logic on external packages, dependency injection is used.

For example, through the New constructor, we inject the dependency into the structure of the business logic. This makes the business logic independent (and portable). We can override the implementation of the interface without making changes to the usecase package.

package usecase

import (
    // Nothing!
)

type Repository interface {
    Get()
}

type UseCase struct {
    repo Repository
}

func New(r Repository) *UseCase{
    return &UseCase{
        repo: r,
    }
}

func (uc *UseCase) Do()  {
    uc.repo.Get()
}

It will also allow us to do auto-generation of mocks (for example with mockery) and easily write unit tests.

We are not tied to specific implementations in order to always be able to change one component to another. If the new component implements the interface, nothing needs to be changed in the business logic.

Clean Architecture

Key idea

Programmers realize the optimal architecture for an application after most of the code has been written.

A good architecture allows decisions to be delayed to as late as possible.

The main principle

Dependency Inversion (the same one from SOLID) is the principle of dependency inversion. The direction of dependencies goes from the outer layer to the inner layer. Due to this, business logic and entities remain independent from other parts of the system.

So, the application is divided into 2 layers, internal and external:

  1. Business logic (Go standard library).
  2. Tools (databases, servers, message brokers, any other packages and frameworks).

Clean Architecture

The inner layer with business logic should be clean. It should:

  • Not have package imports from the outer layer.
  • Use only the capabilities of the standard library.
  • Make calls to the outer layer through the interface (!).

The business logic doesn't know anything about Postgres or a specific web API. Business logic has an interface for working with an abstract database or abstract web API.

The outer layer has other limitations:

  • All components of this layer are unaware of each other's existence. How to call another from one tool? Not directly, only through the inner layer of business logic.
  • All calls to the inner layer are made through the interface (!).
  • Data is transferred in a format that is convenient for business logic (internal/entity).

For example, you need to access the database from HTTP (controller). Both HTTP and database are in the outer layer, which means they know nothing about each other. The communication between them is carried out through usecase (business logic):

    HTTP > usecase
           usecase > repository (Postgres)
           usecase < repository (Postgres)
    HTTP < usecase

The symbols > and < show the intersection of layer boundaries through Interfaces. The same is shown in the picture:

Example

Or more complex business logic:

    HTTP > usecase
           usecase > repository
           usecase < repository
           usecase > webapi
           usecase < webapi
           usecase > RPC
           usecase < RPC
           usecase > repository
           usecase < repository
    HTTP < usecase

Layers

Example

Clean Architecture Terminology

  • Entities are structures that business logic operates on. They are located in the internal/entity folder. In MVC terms, entities are models.

  • Use Cases is business logic located in internal/usecase.

The layer with which business logic directly interacts is usually called the infrastructure layer. These can be repositories internal/usecase/repo, external webapi internal/usecase/webapi, any pkg, and other microservices. In the template, the infrastructure packages are located inside internal/usecase.

You can choose how to call the entry points as you wish. The options are:

  • controller (in our case)
  • delivery
  • transport
  • gateways
  • entrypoints
  • primary
  • input

Additional layers

The classic version of Clean Architecture was designed for building large monolithic applications and has 4 layers.

In the original version, the outer layer is divided into two more, which also have an inversion of dependencies to each other (directed inward) and communicate through interfaces.

The inner layer is also divided into two (with separation of interfaces), in the case of complex logic.


Complex tools can be divided into additional layers. However, you should add layers only if really necessary.

Alternative approaches

In addition to Clean architecture, Onion architecture and Hexagonal (Ports and adapters) are similar to it. Both are based on the principle of Dependency Inversion. Ports and adapters are very close to Clean Architecture, the differences are mainly in terminology.

Similar projects

Useful links

Comments
  • Bump github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.4.0

    Bump github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.4.0

    Bumps github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.4.0.

    Release notes

    Sourced from github.com/ilyakaznacheev/cleanenv's releases.

    Add time.Location support

    What's Changed

    New Contributors

    Full Changelog: https://github.com/ilyakaznacheev/cleanenv/compare/v1.3.1...v1.4.0

    Replace deprecated TOML parsing function call

    What's Changed

    New Contributors

    Full Changelog: https://github.com/ilyakaznacheev/cleanenv/compare/v1.3.0...v1.3.1

    Bump versions, minor fixes

    • bump dependency versions
    • url support in variables
    • security patch

    YAML parser upgraded

    • gopkg.in/yaml v2 -> v3
    Commits
    • 3bb055c Add time.Location support
    • badbae6 Merge remote-tracking branch 'origin/feature/time.Location' into feature/time...
    • c823841 remove tags between struct tags
    • 130ef83 Replace toml deprecated method
    • c05f293 Merge branch 'ilyakaznacheev:master' into feature/time.Location
    • 7886bec compability changes for go 1.13+ versions
    • 33351de Fix: toml deprecate method.
    • f3c3c20 Add version support policy (#102)
    • abaa96d Upgrade codecov action
    • 64fdf0d Separate pipelines
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.3.1

    Bump github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.3.1

    Bumps github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.3.1.

    Release notes

    Sourced from github.com/ilyakaznacheev/cleanenv's releases.

    Replace deprecated TOML parsing function call

    What's Changed

    New Contributors

    Full Changelog: https://github.com/ilyakaznacheev/cleanenv/compare/v1.3.0...v1.3.1

    Bump versions, minor fixes

    • bump dependency versions
    • url support in variables
    • security patch

    YAML parser upgraded

    • gopkg.in/yaml v2 -> v3
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/swaggo/swag from 1.7.4 to 1.8.6

    Bump github.com/swaggo/swag from 1.7.4 to 1.8.6

    Bumps github.com/swaggo/swag from 1.7.4 to 1.8.6.

    Release notes

    Sourced from github.com/swaggo/swag's releases.

    v1.8.6

    Changelog

    bc895ed Fix formatting crosstalk (#1317) c9385a8 build a docker image and push to ghcr.io (#1329) 5fbb18f chore: update version (#1330) cf1c4a7 fix: Generic Fields does not handle Arrays (#1311) b8f53da fix: Generic Fields does not handle Arrays in the .swaggo file (#1322) 2cd7ab5 fix: Generics not detected if name does not contain a pkg path (#1328) 007219f fix: funcDeclaration body check (#1310) e7ccdf4 refactor func splitStructName (#1313)

    v1.8.5

    Changelog

    2f148dd Extended generics support (#1277) 23661ef chore: set CGO_ENABLED=0 for goreleaser to avoid dynamic linking (#1293) 732c087 doc: add function scoped struct declaration example (#1296) 45f01a1 feat: add function scoped struct parse (#1283) cf03796 feat: get swagger instance from register (#1298) af1c525 fix: Go generics cannot find common package object type definition (#1281) 9d34a76 fix: Nested generic fields not fully working, if generic type is from… (#1305)

    v1.8.4

    Changelog

    bd21bb0 Fix issue swaggo/swag#1150 (#1248) 401e414 doc: add missing web frameworks (#1263) a566490 feat: add default description to code if none is provided (#1239) a780e45 feat: default required option for struct fields (#1181) 213f6b8 feat: permit error (and any) interface definition (#1212) 89c61d4 feat: suppress debug logs when using -q (#1254) 0e2ec6c feat: use early overrides to allow converting unsupported types. (#1209) 1cd0b53 fix: don't skip ".." directory (#1238) 8de9952 fix: generic arrays generate successfully (#1247) 796a346 fix: temp dir to be the same as SerchDir to avoid invalid cross-device link (#1203) (#1241)

    v1.8.3

    Changelog

    f09eaa1 chore: cleanup generics_test.go (#1231) b736c5f chore: increment version (#1230) e767abb chore: refactor parser (#1191) 5f6b402 feat: Improve performance when generating spec with external dependencies (#1108) 3b580a0 feat: add --quiet=true for swag init, make the debug logger quiet. (#1206) ff41d9c feat: add basic generics support (#1225) 3cedab9 fix: README_zh-CN.md translate bug (#1202) 67cb768 fix: array enum varnames in arrays (#1187)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/jackc/pgx/v4 from 4.13.0 to 4.17.1

    Bump github.com/jackc/pgx/v4 from 4.13.0 to 4.17.1

    Bumps github.com/jackc/pgx/v4 from 4.13.0 to 4.17.1.

    Changelog

    Sourced from github.com/jackc/pgx/v4's changelog.

    4.17.1 (August 27, 2022)

    • Upgrade puddle to v1.3.0 - fixes context failing to cancel Acquire when acquire is creating resource which was introduced in v4.17.0 (James Hartig)
    • Fix atomic alignment on 32-bit platforms

    4.17.0 (August 6, 2022)

    • Upgrade pgconn to v1.13.0
    • Upgrade pgproto3 to v2.3.1
    • Upgrade pgtype to v1.12.0
    • Allow background pool connections to continue even if cause is canceled (James Hartig)
    • Add LoggerFunc (Gabor Szabad)
    • pgxpool: health check should avoid going below minConns (James Hartig)
    • Add pgxpool.Conn.Hijack()
    • Logging improvements (Stepan Rabotkin)

    4.16.1 (May 7, 2022)

    • Upgrade pgconn to v1.12.1
    • Fix explicitly prepared statements with describe statement cache mode

    4.16.0 (April 21, 2022)

    • Upgrade pgconn to v1.12.0
    • Upgrade pgproto3 to v2.3.0
    • Upgrade pgtype to v1.11.0
    • Fix: Do not panic when context cancelled while getting statement from cache.
    • Fix: Less memory pinning from old Rows.
    • Fix: Support '\r' line ending when sanitizing SQL comment.
    • Add pluggable GSSAPI support (Oliver Tan)

    4.15.0 (February 7, 2022)

    • Upgrade to pgconn v1.11.0
    • Upgrade to pgtype v1.10.0
    • Upgrade puddle to v1.2.1
    • Make BatchResults.Close safe to be called multiple times

    4.14.1 (November 28, 2021)

    • Upgrade pgtype to v1.9.1 (fixes unintentional change to timestamp binary decoding)
    • Start pgxpool background health check after initial connections

    4.14.0 (November 20, 2021)

    • Upgrade pgconn to v1.10.1
    • Upgrade pgproto3 to v2.2.0
    • Upgrade pgtype to v1.9.0
    • Upgrade puddle to v1.2.0
    • Add QueryFunc to BatchResults

    ... (truncated)

    Commits
    • f5cdf0d Update changelog
    • 72fe594 Upgrade to puddle v1.3.0
    • bce26b8 Fix atomic alignment on 32-bit platforms
    • 1d748d9 Failsafe timeout for background pool connections
    • 6871a0c Add v5 testing note to readme
    • 5768a0c Update changelog
    • 7ce634d Ensure there is a timeout for background pool connections
    • f3e04b2 Go 1.19 go fmt
    • 7ad36f3 Upgrade dependencies
    • 3cb9953 pgxpool: Make BeginTx success case clearer
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/swaggo/swag from 1.7.4 to 1.8.5

    Bump github.com/swaggo/swag from 1.7.4 to 1.8.5

    Bumps github.com/swaggo/swag from 1.7.4 to 1.8.5.

    Release notes

    Sourced from github.com/swaggo/swag's releases.

    v1.8.5

    Changelog

    2f148dd Extended generics support (#1277) 23661ef chore: set CGO_ENABLED=0 for goreleaser to avoid dynamic linking (#1293) 732c087 doc: add function scoped struct declaration example (#1296) 45f01a1 feat: add function scoped struct parse (#1283) cf03796 feat: get swagger instance from register (#1298) af1c525 fix: Go generics cannot find common package object type definition (#1281) 9d34a76 fix: Nested generic fields not fully working, if generic type is from… (#1305)

    v1.8.4

    Changelog

    bd21bb0 Fix issue swaggo/swag#1150 (#1248) 401e414 doc: add missing web frameworks (#1263) a566490 feat: add default description to code if none is provided (#1239) a780e45 feat: default required option for struct fields (#1181) 213f6b8 feat: permit error (and any) interface definition (#1212) 89c61d4 feat: suppress debug logs when using -q (#1254) 0e2ec6c feat: use early overrides to allow converting unsupported types. (#1209) 1cd0b53 fix: don't skip ".." directory (#1238) 8de9952 fix: generic arrays generate successfully (#1247) 796a346 fix: temp dir to be the same as SerchDir to avoid invalid cross-device link (#1203) (#1241)

    v1.8.3

    Changelog

    f09eaa1 chore: cleanup generics_test.go (#1231) b736c5f chore: increment version (#1230) e767abb chore: refactor parser (#1191) 5f6b402 feat: Improve performance when generating spec with external dependencies (#1108) 3b580a0 feat: add --quiet=true for swag init, make the debug logger quiet. (#1206) ff41d9c feat: add basic generics support (#1225) 3cedab9 fix: README_zh-CN.md translate bug (#1202) 67cb768 fix: array enum varnames in arrays (#1187)

    v1.8.2

    Changelog

    c7cb3fd chore: update @​Produce comments (#1196) 36ae7af chore: remove gomonkey dependency from formatter (#1192) 47d5a76 chore: updating dependencies (#1190) 5f6c5f8 impr: add param example to readme (#1189) 636f456 chore: improve code quality (#1184) 90170b9 chore(deps): bump github.com/swaggo/http-swagger in /example/markdown (#1185) d209f71 added security definition description (#1174)

    ... (truncated)

    Commits
    • a3935c5 chore: increment version (#1308)
    • 9d34a76 fix: Nested generic fields not fully working, if generic type is from… (#1305)
    • 732c087 doc: add function scoped struct declaration example (#1296)
    • cf03796 feat: get swagger instance from register (#1298)
    • 23661ef chore: set CGO_ENABLED=0 for goreleaser to avoid dynamic linking (#1293)
    • 45f01a1 feat: add function scoped struct parse (#1283)
    • af1c525 fix: Go generics cannot find common package object type definition (#1281)
    • 2f148dd Extended generics support (#1277)
    • cc25410 chore: increment version to 1.8.4 (#1268)
    • 89c61d4 feat: suppress debug logs when using -q (#1254)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/jackc/pgx/v4 from 4.13.0 to 4.17.0

    Bump github.com/jackc/pgx/v4 from 4.13.0 to 4.17.0

    Bumps github.com/jackc/pgx/v4 from 4.13.0 to 4.17.0.

    Changelog

    Sourced from github.com/jackc/pgx/v4's changelog.

    4.17.0 (August 6, 2022)

    • Upgrade pgconn to v1.13.0
    • Upgrade pgproto3 to v2.3.1
    • Upgrade pgtype to v1.12.0
    • Allow background pool connections to continue even if cause is canceled (James Hartig)
    • Add LoggerFunc (Gabor Szabad)
    • pgxpool: health check should avoid going below minConns (James Hartig)
    • Add pgxpool.Conn.Hijack()
    • Logging improvements (Stepan Rabotkin)

    4.16.1 (May 7, 2022)

    • Upgrade pgconn to v1.12.1
    • Fix explicitly prepared statements with describe statement cache mode

    4.16.0 (April 21, 2022)

    • Upgrade pgconn to v1.12.0
    • Upgrade pgproto3 to v2.3.0
    • Upgrade pgtype to v1.11.0
    • Fix: Do not panic when context cancelled while getting statement from cache.
    • Fix: Less memory pinning from old Rows.
    • Fix: Support '\r' line ending when sanitizing SQL comment.
    • Add pluggable GSSAPI support (Oliver Tan)

    4.15.0 (February 7, 2022)

    • Upgrade to pgconn v1.11.0
    • Upgrade to pgtype v1.10.0
    • Upgrade puddle to v1.2.1
    • Make BatchResults.Close safe to be called multiple times

    4.14.1 (November 28, 2021)

    • Upgrade pgtype to v1.9.1 (fixes unintentional change to timestamp binary decoding)
    • Start pgxpool background health check after initial connections

    4.14.0 (November 20, 2021)

    • Upgrade pgconn to v1.10.1
    • Upgrade pgproto3 to v2.2.0
    • Upgrade pgtype to v1.9.0
    • Upgrade puddle to v1.2.0
    • Add QueryFunc to BatchResults
    • Add context options to zerologadapter (Thomas Frössman)
    • Add zerologadapter.NewContextLogger (urso)
    • Eager initialize minpoolsize on connect (Daniel)
    • Unpin memory used by large queries immediately after use
    Commits
    • 5768a0c Update changelog
    • 7ce634d Ensure there is a timeout for background pool connections
    • f3e04b2 Go 1.19 go fmt
    • 7ad36f3 Upgrade dependencies
    • 3cb9953 pgxpool: Make BeginTx success case clearer
    • 91c9e84 Ignore cancellation in puddle constructor
    • 88079de Update issue templates
    • cb5ddcd Update issue templates
    • 3961954 Add logger func wrapper
    • a814153 pgxpool: health check should avoid going below minConns
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/swaggo/swag from 1.7.4 to 1.8.4

    Bump github.com/swaggo/swag from 1.7.4 to 1.8.4

    Bumps github.com/swaggo/swag from 1.7.4 to 1.8.4.

    Release notes

    Sourced from github.com/swaggo/swag's releases.

    v1.8.4

    Changelog

    bd21bb0 Fix issue swaggo/swag#1150 (#1248) 401e414 doc: add missing web frameworks (#1263) a566490 feat: add default description to code if none is provided (#1239) a780e45 feat: default required option for struct fields (#1181) 213f6b8 feat: permit error (and any) interface definition (#1212) 89c61d4 feat: suppress debug logs when using -q (#1254) 0e2ec6c feat: use early overrides to allow converting unsupported types. (#1209) 1cd0b53 fix: don't skip ".." directory (#1238) 8de9952 fix: generic arrays generate successfully (#1247) 796a346 fix: temp dir to be the same as SerchDir to avoid invalid cross-device link (#1203) (#1241)

    v1.8.3

    Changelog

    f09eaa1 chore: cleanup generics_test.go (#1231) b736c5f chore: increment version (#1230) e767abb chore: refactor parser (#1191) 5f6b402 feat: Improve performance when generating spec with external dependencies (#1108) 3b580a0 feat: add --quiet=true for swag init, make the debug logger quiet. (#1206) ff41d9c feat: add basic generics support (#1225) 3cedab9 fix: README_zh-CN.md translate bug (#1202) 67cb768 fix: array enum varnames in arrays (#1187)

    v1.8.2

    Changelog

    c7cb3fd chore: update @​Produce comments (#1196) 36ae7af chore: remove gomonkey dependency from formatter (#1192) 47d5a76 chore: updating dependencies (#1190) 5f6c5f8 impr: add param example to readme (#1189) 636f456 chore: improve code quality (#1184) 90170b9 chore(deps): bump github.com/swaggo/http-swagger in /example/markdown (#1185) d209f71 added security definition description (#1174)

    v1.8.1

    Changelog

    69245e5 chore: update description.markdown description (#1167) 050b0aa chore: update version.go (#1169) add313f doc: security or documentation (#1158) 32b2467 feat: Example/SchemaExample: allow \r \n \t (#1156) 7dc2340 feat: Feature security or documentation (#1157) 6686f54 feat: [security] feature add or-option (#1151) 334111b feat: add option to set the example to schema #1140 (#1148) 957b087 feat: fix go 1.18 errors caused by any type (#1168) 2b64f78 fix swaggo/swag#1154 (#1161)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/swaggo/swag from 1.7.4 to 1.8.3

    Bump github.com/swaggo/swag from 1.7.4 to 1.8.3

    Bumps github.com/swaggo/swag from 1.7.4 to 1.8.3.

    Release notes

    Sourced from github.com/swaggo/swag's releases.

    v1.8.3

    Changelog

    f09eaa1 chore: cleanup generics_test.go (#1231) b736c5f chore: increment version (#1230) e767abb chore: refactor parser (#1191) 5f6b402 feat: Improve performance when generating spec with external dependencies (#1108) 3b580a0 feat: add --quiet=true for swag init, make the debug logger quiet. (#1206) ff41d9c feat: add basic generics support (#1225) 3cedab9 fix: README_zh-CN.md translate bug (#1202) 67cb768 fix: array enum varnames in arrays (#1187)

    v1.8.2

    Changelog

    c7cb3fd chore: update @​Produce comments (#1196) 36ae7af chore: remove gomonkey dependency from formatter (#1192) 47d5a76 chore: updating dependencies (#1190) 5f6c5f8 impr: add param example to readme (#1189) 636f456 chore: improve code quality (#1184) 90170b9 chore(deps): bump github.com/swaggo/http-swagger in /example/markdown (#1185) d209f71 added security definition description (#1174)

    v1.8.1

    Changelog

    69245e5 chore: update description.markdown description (#1167) 050b0aa chore: update version.go (#1169) add313f doc: security or documentation (#1158) 32b2467 feat: Example/SchemaExample: allow \r \n \t (#1156) 7dc2340 feat: Feature security or documentation (#1157) 6686f54 feat: [security] feature add or-option (#1151) 334111b feat: add option to set the example to schema #1140 (#1148) 957b087 feat: fix go 1.18 errors caused by any type (#1168) 2b64f78 fix swaggo/swag#1154 (#1161) 9205937 fix: README_zh-CN.md broken link (#1153)

    v1.8.0

    Changelog

    cd97e7f fix: Linter fails (#1136) (#1137) 3a778dc fix: split extensions param respecting open/close brackets (#1107) 1a0a57a fix: swaggerinfo template for instanceNames (#1133) (#1134)

    v1.7.9-p1

    Changelog

    24209aa fix: breaking change introduced by generation of 2 documents in the same package (#1127)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.3.0

    Bump github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.3.0

    Bumps github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.3.0.

    Release notes

    Sourced from github.com/ilyakaznacheev/cleanenv's releases.

    Bump versions, minor fixes

    • bump dependency versions
    • url support in variables
    • security patch

    YAML parser upgraded

    • gopkg.in/yaml v2 -> v3
    Commits
    • 5423d73 version bump
    • e82c516 quote-imports-in-readme
    • 55f3daa add-url-support
    • 3247bc7 security: upgrade dependencies
    • 7a15cb0 YAML parser upgraded
    • 79612be Add example of configuration from environment variables
    • 970e336 Add support to URLs in conf
    • ad7da9c Extract supported structs in separate map, to make code more general
    • a4b44a5 Tell which tests failed, for better debugging
    • 411b737 docs: quote the import package within the examples
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/gin-gonic/gin from 1.7.4 to 1.8.0

    Bump github.com/gin-gonic/gin from 1.7.4 to 1.8.0

    Bumps github.com/gin-gonic/gin from 1.7.4 to 1.8.0.

    Release notes

    Sourced from github.com/gin-gonic/gin's releases.

    v1.8.0

    Changelog

    BUGFIXES

    • Fixed SetOutput() panics on go 1.17 #2861
    • Fix: wrong when wildcard follows named param #2983
    • Fix: missing sameSite when do context.reset() #3123

    ENHANCEMENTS

    • Use Header() instead of deprecated HeaderMap #2694
    • RouterGroup.Handle regular match optimization of http method #2685
    • Add support go-json, another drop-in json replacement #2680
    • Use errors.New to replace fmt.Errorf will much better #2707
    • Use Duration.Truncate for truncating precision #2711
    • Get client IP when using Cloudflare #2723
    • Optimize code adjust #2700
    • Optimize code and reduce code cyclomatic complexity #2737
    • gin.Context with fallback value from gin.Context.Request.Context() #2751
    • Improve sliceValidateError.Error performance #2765
    • Support custom struct tag #2720
    • Improve router group tests #2787
    • Fallback Context.Deadline() Context.Done() Context.Err() to Context.Request.Context() #2769
    • Some codes optimize #2830 #2834 #2838 #2837 #2788 #2848 #2851 #2701
    • TrustedProxies: Add default IPv6 support and refactor #2967
    • Test(route): expose performRequest func #3012
    • Support h2c with prior knowledge #1398
    • Feat attachment filename support utf8 #3071
    • Feat: add StaticFileFS #2749
    • Feat(context): return GIN Context from Value method #2825
    • Feat: automatically SetMode to TestMode when run go test #3139
    • Add TOML bining for gin #3081
    • IPv6 add default trusted proxies #3033

    DOCS

    • Add note about nomsgpack tag to the readme #2703

    Release v1.7.7

    BUGFIXES

    • Fixed X-Forwarded-For unsafe handling of CVE-2020-28483 #2844, closed issue #2862
    • Tree: updated the code logic for latestNode #2897, closed issue #2894 #2878
    • Tree: fixed the misplacement of adding slashes #2847, closed issue #2843
    • Tree: fixed tsr with mixed static and wildcard paths #2924, closed issue #2918

    ENHANCEMENTS

    • TrustedProxies: make it backward-compatible #2887, closed issue #2819

    ... (truncated)

    Changelog

    Sourced from github.com/gin-gonic/gin's changelog.

    Gin v1.8.0

    BUGFIXES

    • Fixed SetOutput() panics on go 1.17 #2861
    • Fix: wrong when wildcard follows named param #2983
    • Fix: missing sameSite when do context.reset() #3123

    ENHANCEMENTS

    • Use Header() instead of deprecated HeaderMap #2694
    • RouterGroup.Handle regular match optimization of http method #2685
    • Add support go-json, another drop-in json replacement #2680
    • Use errors.New to replace fmt.Errorf will much better #2707
    • Use Duration.Truncate for truncating precision #2711
    • Get client IP when using Cloudflare #2723
    • Optimize code adjust #2700
    • Optimize code and reduce code cyclomatic complexity #2737
    • gin.Context with fallback value from gin.Context.Request.Context() #2751
    • Improve sliceValidateError.Error performance #2765
    • Support custom struct tag #2720
    • Improve router group tests #2787
    • Fallback Context.Deadline() Context.Done() Context.Err() to Context.Request.Context() #2769
    • Some codes optimize #2830 #2834 #2838 #2837 #2788 #2848 #2851 #2701
    • TrustedProxies: Add default IPv6 support and refactor #2967
    • Test(route): expose performRequest func #3012
    • Support h2c with prior knowledge #1398
    • Feat attachment filename support utf8 #3071
    • Feat: add StaticFileFS #2749
    • Feat(context): return GIN Context from Value method #2825
    • Feat: automatically SetMode to TestMode when run go test #3139
    • Add TOML bining for gin #3081
    • IPv6 add default trusted proxies #3033

    DOCS

    • Add note about nomsgpack tag to the readme #2703

    Gin v1.7.7

    BUGFIXES

    • Fixed X-Forwarded-For unsafe handling of CVE-2020-28483 #2844, closed issue #2862.
    • Tree: updated the code logic for latestNode #2897, closed issue #2894 #2878.
    • Tree: fixed the misplacement of adding slashes #2847, closed issue #2843.
    • Tree: fixed tsr with mixed static and wildcard paths #2924, closed issue #2918.

    ENHANCEMENTS

    • TrustedProxies: make it backward-compatible #2887, closed issue #2819.

    ... (truncated)

    Commits
    • 38eb5ac add v1.8.0 changelog (#3160)
    • 60e24d5 chore(CI/CD): add go version release flow (#3159)
    • 4b68a5f chore: update go.mod and remove space from copyright (#3158)
    • ed03102 [GIN-001] - Add TOML bining for gin (#3081)
    • aa60021 Fix intercepting headers in middlewares (#1271)
    • 87811a9 fix: the trusted proxies should support ipv6 address by default (#3033)
    • f1e9428 chore(deps): bump golangci/golangci-lint-action from 3.1.0 to 3.2.0 (#3150)
    • ef687e0 feat: automatically SetMode to TestMode when run go test. (#3139)
    • 90e7073 chore(deps): bump github/codeql-action from 1 to 2 (#3132)
    • c131704 chore(deps): bump github.com/goccy/go-json from 0.9.6 to 0.9.7 (#3131)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/swaggo/swag from 1.7.4 to 1.8.2

    Bump github.com/swaggo/swag from 1.7.4 to 1.8.2

    Bumps github.com/swaggo/swag from 1.7.4 to 1.8.2.

    Release notes

    Sourced from github.com/swaggo/swag's releases.

    v1.8.2

    Changelog

    c7cb3fd chore: update @​Produce comments (#1196) 36ae7af chore: remove gomonkey dependency from formatter (#1192) 47d5a76 chore: updating dependencies (#1190) 5f6c5f8 impr: add param example to readme (#1189) 636f456 chore: improve code quality (#1184) 90170b9 chore(deps): bump github.com/swaggo/http-swagger in /example/markdown (#1185) d209f71 added security definition description (#1174)

    v1.8.1

    Changelog

    69245e5 chore: update description.markdown description (#1167) 050b0aa chore: update version.go (#1169) add313f doc: security or documentation (#1158) 32b2467 feat: Example/SchemaExample: allow \r \n \t (#1156) 7dc2340 feat: Feature security or documentation (#1157) 6686f54 feat: [security] feature add or-option (#1151) 334111b feat: add option to set the example to schema #1140 (#1148) 957b087 feat: fix go 1.18 errors caused by any type (#1168) 2b64f78 fix swaggo/swag#1154 (#1161) 9205937 fix: README_zh-CN.md broken link (#1153)

    v1.8.0

    Changelog

    cd97e7f fix: Linter fails (#1136) (#1137) 3a778dc fix: split extensions param respecting open/close brackets (#1107) 1a0a57a fix: swaggerinfo template for instanceNames (#1133) (#1134)

    v1.7.9-p1

    Changelog

    24209aa fix: breaking change introduced by generation of 2 documents in the same package (#1127)

    v1.7.9

    Changelog

    b0cdfd4 build: update go directive in go.mod to 1.17 (#1089) 7137cd8 chore: drop support for go 1.14 (#1111) a8ef569 chore: field tags constants (#1088) 808bde6 chore: improve unit tests (#1123) e969efb chore: release v1.7.9 cae7467 feat: Generated file name from instanceName (#1112) 44c3853 feat: add example parameter (#1122) 32f02b9 feat: add generation of type description to schema (#708) (#1106) 97ea98e feat: allow generating of specific docs files only (#577)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.4.1

    Bump github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.4.1

    Bumps github.com/ilyakaznacheev/cleanenv from 1.2.5 to 1.4.1.

    Release notes

    Sourced from github.com/ilyakaznacheev/cleanenv's releases.

    Skip unexpected fields

    What's Changed

    New Contributors

    Full Changelog: https://github.com/ilyakaznacheev/cleanenv/compare/v1.4.0...v1.4.1

    Add time.Location support

    What's Changed

    New Contributors

    Full Changelog: https://github.com/ilyakaznacheev/cleanenv/compare/v1.3.1...v1.4.0

    Replace deprecated TOML parsing function call

    What's Changed

    New Contributors

    Full Changelog: https://github.com/ilyakaznacheev/cleanenv/compare/v1.3.0...v1.3.1

    Bump versions, minor fixes

    • bump dependency versions
    • url support in variables
    • security patch

    YAML parser upgraded

    • gopkg.in/yaml v2 -> v3
    Commits
    • 7878a2c Skip no exported field on readStructMetadata (#107)
    • cae814f fix: refactor test-case
    • 0258d9d feat: skip unexported field on readStructMetadata
    • 3bb055c Add time.Location support
    • badbae6 Merge remote-tracking branch 'origin/feature/time.Location' into feature/time...
    • c823841 remove tags between struct tags
    • 130ef83 Replace toml deprecated method
    • c05f293 Merge branch 'ilyakaznacheev:master' into feature/time.Location
    • 7886bec compability changes for go 1.13+ versions
    • 33351de Fix: toml deprecate method.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/swaggo/swag from 1.7.4 to 1.8.7

    Bump github.com/swaggo/swag from 1.7.4 to 1.8.7

    Bumps github.com/swaggo/swag from 1.7.4 to 1.8.7.

    Release notes

    Sourced from github.com/swaggo/swag's releases.

    v1.8.7

    Changelog

    f8d59d6 Bump golang.org/x/tools dependency version (#1338) 7f90377 Fix generics issue #1345 (#1349) e4f0129 chore: drop go1.15 support (#1331) 277a278 chore: increment version (#1350) 74e96c9 feat. add support formData []file (#1332) 04c699c fix issue #1346 about generics (#1348) 075c176 refactor: move from io/ioutil to io and os packages (#1334)

    v1.8.6

    Changelog

    bc895ed Fix formatting crosstalk (#1317) c9385a8 build a docker image and push to ghcr.io (#1329) 5fbb18f chore: update version (#1330) cf1c4a7 fix: Generic Fields does not handle Arrays (#1311) b8f53da fix: Generic Fields does not handle Arrays in the .swaggo file (#1322) 2cd7ab5 fix: Generics not detected if name does not contain a pkg path (#1328) 007219f fix: funcDeclaration body check (#1310) e7ccdf4 refactor func splitStructName (#1313)

    v1.8.5

    Changelog

    2f148dd Extended generics support (#1277) 23661ef chore: set CGO_ENABLED=0 for goreleaser to avoid dynamic linking (#1293) 732c087 doc: add function scoped struct declaration example (#1296) 45f01a1 feat: add function scoped struct parse (#1283) cf03796 feat: get swagger instance from register (#1298) af1c525 fix: Go generics cannot find common package object type definition (#1281) 9d34a76 fix: Nested generic fields not fully working, if generic type is from… (#1305)

    v1.8.4

    Changelog

    bd21bb0 Fix issue swaggo/swag#1150 (#1248) 401e414 doc: add missing web frameworks (#1263) a566490 feat: add default description to code if none is provided (#1239) a780e45 feat: default required option for struct fields (#1181) 213f6b8 feat: permit error (and any) interface definition (#1212) 89c61d4 feat: suppress debug logs when using -q (#1254) 0e2ec6c feat: use early overrides to allow converting unsupported types. (#1209) 1cd0b53 fix: don't skip ".." directory (#1238) 8de9952 fix: generic arrays generate successfully (#1247) 796a346 fix: temp dir to be the same as SerchDir to avoid invalid cross-device link (#1203) (#1241)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/jackc/pgx/v4 from 4.13.0 to 4.17.2

    Bump github.com/jackc/pgx/v4 from 4.13.0 to 4.17.2

    Bumps github.com/jackc/pgx/v4 from 4.13.0 to 4.17.2.

    Changelog

    Sourced from github.com/jackc/pgx/v4's changelog.

    4.17.2 (September 3, 2022)

    • Fix panic when logging batch error (Tom Möller)

    4.17.1 (August 27, 2022)

    • Upgrade puddle to v1.3.0 - fixes context failing to cancel Acquire when acquire is creating resource which was introduced in v4.17.0 (James Hartig)
    • Fix atomic alignment on 32-bit platforms

    4.17.0 (August 6, 2022)

    • Upgrade pgconn to v1.13.0
    • Upgrade pgproto3 to v2.3.1
    • Upgrade pgtype to v1.12.0
    • Allow background pool connections to continue even if cause is canceled (James Hartig)
    • Add LoggerFunc (Gabor Szabad)
    • pgxpool: health check should avoid going below minConns (James Hartig)
    • Add pgxpool.Conn.Hijack()
    • Logging improvements (Stepan Rabotkin)

    4.16.1 (May 7, 2022)

    • Upgrade pgconn to v1.12.1
    • Fix explicitly prepared statements with describe statement cache mode

    4.16.0 (April 21, 2022)

    • Upgrade pgconn to v1.12.0
    • Upgrade pgproto3 to v2.3.0
    • Upgrade pgtype to v1.11.0
    • Fix: Do not panic when context cancelled while getting statement from cache.
    • Fix: Less memory pinning from old Rows.
    • Fix: Support '\r' line ending when sanitizing SQL comment.
    • Add pluggable GSSAPI support (Oliver Tan)

    4.15.0 (February 7, 2022)

    • Upgrade to pgconn v1.11.0
    • Upgrade to pgtype v1.10.0
    • Upgrade puddle to v1.2.1
    • Make BatchResults.Close safe to be called multiple times

    4.14.1 (November 28, 2021)

    • Upgrade pgtype to v1.9.1 (fixes unintentional change to timestamp binary decoding)
    • Start pgxpool background health check after initial connections

    4.14.0 (November 20, 2021)

    • Upgrade pgconn to v1.10.1

    ... (truncated)

    Commits
    • d42b399 Update changelog
    • dfce986 Fix panic when logging batch error
    • f5cdf0d Update changelog
    • 72fe594 Upgrade to puddle v1.3.0
    • bce26b8 Fix atomic alignment on 32-bit platforms
    • 1d748d9 Failsafe timeout for background pool connections
    • 6871a0c Add v5 testing note to readme
    • 5768a0c Update changelog
    • 7ce634d Ensure there is a timeout for background pool connections
    • f3e04b2 Go 1.19 go fmt
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/gin-gonic/gin from 1.7.4 to 1.8.1

    Bump github.com/gin-gonic/gin from 1.7.4 to 1.8.1

    Bumps github.com/gin-gonic/gin from 1.7.4 to 1.8.1.

    Release notes

    Sourced from github.com/gin-gonic/gin's releases.

    v1.8.1

    Changelog

    Features

    • f197a8b feat(context): add ContextWithFallback feature flag (#3166) (#3172)

    v1.8.0

    Changelog

    Break Changes

    • TrustedProxies: Add default IPv6 support and refactor #2967. Please replace RemoteIP() (net.IP, bool) with RemoteIP() net.IP
    • gin.Context with fallback value from gin.Context.Request.Context() #2751

    BUGFIXES

    • Fixed SetOutput() panics on go 1.17 #2861
    • Fix: wrong when wildcard follows named param #2983
    • Fix: missing sameSite when do context.reset() #3123

    ENHANCEMENTS

    • Use Header() instead of deprecated HeaderMap #2694
    • RouterGroup.Handle regular match optimization of http method #2685
    • Add support go-json, another drop-in json replacement #2680
    • Use errors.New to replace fmt.Errorf will much better #2707
    • Use Duration.Truncate for truncating precision #2711
    • Get client IP when using Cloudflare #2723
    • Optimize code adjust #2700
    • Optimize code and reduce code cyclomatic complexity #2737
    • gin.Context with fallback value from gin.Context.Request.Context() #2751
    • Improve sliceValidateError.Error performance #2765
    • Support custom struct tag #2720
    • Improve router group tests #2787
    • Fallback Context.Deadline() Context.Done() Context.Err() to Context.Request.Context() #2769
    • Some codes optimize #2830 #2834 #2838 #2837 #2788 #2848 #2851 #2701
    • Test(route): expose performRequest func #3012
    • Support h2c with prior knowledge #1398
    • Feat attachment filename support utf8 #3071
    • Feat: add StaticFileFS #2749
    • Feat(context): return GIN Context from Value method #2825
    • Feat: automatically SetMode to TestMode when run go test #3139
    • Add TOML bining for gin #3081
    • IPv6 add default trusted proxies #3033

    DOCS

    • Add note about nomsgpack tag to the readme #2703

    ... (truncated)

    Changelog

    Sourced from github.com/gin-gonic/gin's changelog.

    Gin v1.8.1

    ENHANCEMENTS

    • feat(context): add ContextWithFallback feature flag #3172

    Gin v1.8.0

    Break Changes

    • TrustedProxies: Add default IPv6 support and refactor #2967. Please replace RemoteIP() (net.IP, bool) with RemoteIP() net.IP
    • gin.Context with fallback value from gin.Context.Request.Context() #2751

    BUGFIXES

    • Fixed SetOutput() panics on go 1.17 #2861
    • Fix: wrong when wildcard follows named param #2983
    • Fix: missing sameSite when do context.reset() #3123

    ENHANCEMENTS

    • Use Header() instead of deprecated HeaderMap #2694
    • RouterGroup.Handle regular match optimization of http method #2685
    • Add support go-json, another drop-in json replacement #2680
    • Use errors.New to replace fmt.Errorf will much better #2707
    • Use Duration.Truncate for truncating precision #2711
    • Get client IP when using Cloudflare #2723
    • Optimize code adjust #2700
    • Optimize code and reduce code cyclomatic complexity #2737
    • Improve sliceValidateError.Error performance #2765
    • Support custom struct tag #2720
    • Improve router group tests #2787
    • Fallback Context.Deadline() Context.Done() Context.Err() to Context.Request.Context() #2769
    • Some codes optimize #2830 #2834 #2838 #2837 #2788 #2848 #2851 #2701
    • TrustedProxies: Add default IPv6 support and refactor #2967
    • Test(route): expose performRequest func #3012
    • Support h2c with prior knowledge #1398
    • Feat attachment filename support utf8 #3071
    • Feat: add StaticFileFS #2749
    • Feat(context): return GIN Context from Value method #2825
    • Feat: automatically SetMode to TestMode when run go test #3139
    • Add TOML bining for gin #3081
    • IPv6 add default trusted proxies #3033

    DOCS

    • Add note about nomsgpack tag to the readme #2703

    Gin v1.7.7

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/Masterminds/squirrel from 1.5.1 to 1.5.3

    Bump github.com/Masterminds/squirrel from 1.5.1 to 1.5.3

    Bumps github.com/Masterminds/squirrel from 1.5.1 to 1.5.3.

    Release notes

    Sourced from github.com/Masterminds/squirrel's releases.

    v1.5.3

    No release notes provided.

    v1.5.2 Fix placeholder generation for And/Or

    What's Changed

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Owner
null
Clean Architecture using Golang.

Golang Template Description This is an example of implementation of Clean Architecture in Go (Golang) projects. Rule of Clean Architecture by Uncle Bo

Golang Common Packages 78 Nov 1, 2022
An example of implementation of Clean Architecture in Golang

Golang Template Description This is an example of implementation of Clean Archit

Emirhan 0 Dec 29, 2021
Clean arch Golang template project

Template No previous versions, still working on this one to reach v1. API Service for pssword app mobilde based on : https://github.com/bxcodec/go-cle

Diego Alberto León López 2 Sep 15, 2021
Goview is a lightweight, minimalist and idiomatic template library based on golang html/template for building Go web application.

goview Goview is a lightweight, minimalist and idiomatic template library based on golang html/template for building Go web application. Contents Inst

foolin 309 Nov 23, 2022
Go-project-template - Template for a golang project

This is a template repository for golang project Usage Go to github: https://git

KyberNetwork 4 Oct 25, 2022
A simple template using Fiber for me to bootstrap API services quickly.

Fiber Template A simple template using Fiber for me to bootstrap API services quickly. Features Fiber GORM air for hot reloading ... and possibly more

Victor Neo 0 Dec 16, 2021
Wrapper package for Go's template/html to allow for easy file-based template inheritance.

Extemplate Extemplate is a small wrapper package around html/template to allow for easy file-based template inheritance. File: templates/parent.tmpl <

Danny van Kooten 51 Nov 13, 2022
Fast, powerful, yet easy to use template engine for Go. Optimized for speed, zero memory allocations in hot paths. Up to 20x faster than html/template

quicktemplate A fast, powerful, yet easy to use template engine for Go. Inspired by the Mako templates philosophy. Features Extremely fast. Templates

Aliaksandr Valialkin 2.6k Nov 18, 2022
Simple system for writing HTML/XML as Go code. Better-performing replacement for html/template and text/template

Simple system for writing HTML as Go code. Use normal Go conditionals, loops and functions. Benefit from typing and code analysis. Better performance than templating. Tiny and dependency-free.

Nelo Mitranim 4 Apr 13, 2022
A template to build dynamic web apps quickly using Go, html/template and javascript

gomodest-template A modest template to build dynamic web apps in Go, HTML and sprinkles and spots of javascript. Why ? Build dynamic websites using th

Adnaan Badr 86 Sep 28, 2022
Made from template temporalio/money-transfer-project-template-go

Temporal Go Project Template This is a simple project for demonstrating Temporal with the Go SDK. The full 20 minute guide is here: https://docs.tempo

MarkGorewicz 0 Jan 6, 2022
Go-api-template - A rough template to give you a starting point for your API

Golang API Template This is only a rough template to give you a starting point f

Only Tunes Radio 3 Jan 14, 2022
Api-go-template - A simple Go API template that uses a controller-service based model to build its routes

api-go-template This is a simple Go API template that uses a controller-service

Pedro Espíndula 1 Feb 18, 2022
A general purpose golang CLI template for Github and Gitlab

golang-cli-template A general purpose project template for golang CLI applications This template serves as a starting point for golang commandline app

null 20 Nov 19, 2022
Template for Golang rest API using Fiber

Rest API Setup DB sudo -S docker-compose -f db.yml up -d Build container sudo -S docker build -t rest-api-image . Run container from image sudo -S doc

Daniel Svitan 2 Dec 5, 2021
A Go Template Library. A bunch of utils and collections that are not part of the Golang standard library.

gotl A Go Template Library. A bunch of utils and collections that are not part of the Golang standard library. Prerequisites This library is using ext

null 1 Dec 15, 2021
Competitive Programming Template for Golang

Go Competitive Programming Template How to use this repo? Check the commit histo

Tien La 0 Dec 19, 2021
Template user CRUD operations with golang, JWT, postgres

user-api-golang A CRUD API template for perform operations on users. Written in golang. Components Server: Golang with go-chi as mux and zap for loggi

Amandeep Singh 0 Dec 26, 2021
Template for depency injection in golang (no libraries)

Go Dependency Injection (No libraries) Project template based on the most common layered architecture style, made to explain how to do dependency inje

Yael 2 Mar 30, 2022