Merged in feature/devbox (pull request #11)

Add Devbox

* adddevbox

* cleanupdockerfile

* testscripts
This commit is contained in:
Michael McGuinness
2025-01-10 12:58:14 +00:00
parent 0ebb8a21a1
commit 6e5c7aedc8
127 changed files with 1371 additions and 811 deletions
+10
View File
@@ -1,3 +1,13 @@
#!/bin/bash
# Automatically sets up your devbox environment whenever you cd into this
# directory via our direnv integration:
eval "$(devbox generate direnv --print-envrc)"
# check out https://www.jetpack.io/devbox/docs/ide_configuration/direnv/
# for more details
export APP_ENV="${APP_ENV:-development}"
export DB_USER="${DB_USER:-postgres}"
export DB_PASS="${DB_PASS:-pass}"
+14 -37
View File
@@ -1,46 +1,23 @@
# Go Template
# Query Orchestration
This repository is a template for golang projects with the assumption that is being run in a linux-based environment.
This repository contains the DoczyAI code.
Using the following project as a baseline: https://github.com/golang-standards/project-layout.
## Set Up
## Installation and Usage
### gRPC API
Remove queue folders, and bring grpc into super directory.
### AWS SQS Listener
Remove grpc folders, and bring queue into super directory.
### gRPC Gateway
Set up gRPC Gateway: https://github.com/grpc-ecosystem/grpc-gateway
## Installation
- Install golang: `https://go.dev/doc/install`
- Add to ~/.profile or equivalent:
```
PATH=$PATH:/usr/local/go/bin
PATH=$PATH:$(go env GOPATH)/bin
```
- Restart terminal
- Install protoc: `https://grpc.io/docs/protoc-installation/`
- Ubuntu: `apt install -y protobuf-compiler`
- MacOS: `brew install protobuf`
- Install shellcheck
- Ubuntu: `apt install -y shellcheck`
- Ensure user in docker group and docker group is in sudo group
- Install devbox: `https://www.jetify.com/docs/devbox/installing_devbox`
- Ubuntu/MacOS: `curl -fsSL https://get.jetify.com/devbox | bash`
- Run `devbox shell` to enter the environment
- Create `.env` file to add environment variables
- Run `direnv allow` to ensure environment variables are populated
- Run `task deps:download` to download code dependencies
- (IF NECESSARY) Ensure user in docker group and docker group is in sudo group
```
sudo groupadd docker
sudo usermod -aG docker $USER
```
- Run: `./scripts/install-deps.sh`
- Add to ~/.profile or equivalent:
```
eval "$(direnv hook bash)"
```
- Restart terminal
- Create `.env` file to add environment variables
To find new packages: `https://search.nixos.org/packages`
For regular usage, please use `task` scripts in order run the most appropriate configuration.
+6 -2
View File
@@ -1,8 +1,10 @@
# syntax=docker/dockerfile:1
ARG GO_VERSION=1.23
FROM golang:${GO_VERSION} AS build
WORKDIR /src
WORKDIR /app
RUN --mount=type=cache,target=/go/pkg/mod/ \
--mount=type=bind,source=go.sum,target=go.sum \
@@ -17,6 +19,8 @@ RUN --mount=type=cache,target=/go/pkg/mod/ \
FROM scratch AS final
WORKDIR /app
COPY database/migrations/ database/migrations/
COPY --from=build /bin/ /bin/
COPY --from=build /bin/ .
+30
View File
@@ -0,0 +1,30 @@
{
"$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.13.7/.schema/devbox.schema.json",
"packages": [
"golangci-lint@1.62.2",
"protolint@0.50.5",
"yamllint@1.35.1",
"sqlc@1.27.0",
"direnv@2.35.0",
"go-mockery@2.46.3",
"protoc-gen-go@1.35.1",
"protoc-gen-go-grpc@1.3.0",
"go-migrate@4.18.1",
"go@1.23.3",
"protobuf@28.3",
"go-task@3.39.2",
"hadolint@2.12.0",
"gotools@0.25.0",
"nodePackages.jsonlint@1.6.3"
],
"shell": {
"init_hook": [
"echo 'Welcome to the DoczyAI devbox!'"
],
"scripts": {
"deps:download": [
"task deps:download"
]
}
}
}
+745
View File
@@ -0,0 +1,745 @@
{
"lockfile_version": "1",
"packages": {
"direnv@2.35.0": {
"last_modified": "2024-12-23T21:10:33Z",
"resolved": "github:NixOS/nixpkgs/de1864217bfa9b5845f465e771e0ecb48b30e02d#direnv",
"source": "devbox-search",
"version": "2.35.0",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/xp28bzq6qi11db7pqgfx3rc139q45489-direnv-2.35.0",
"default": true
}
],
"store_path": "/nix/store/xp28bzq6qi11db7pqgfx3rc139q45489-direnv-2.35.0"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/55vva1q4lhw2m62vvzzm2z26wfkpb430-direnv-2.35.0",
"default": true
}
],
"store_path": "/nix/store/55vva1q4lhw2m62vvzzm2z26wfkpb430-direnv-2.35.0"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/gza242ir81wafi79cfxk619n36rxqqmk-direnv-2.35.0",
"default": true
}
],
"store_path": "/nix/store/gza242ir81wafi79cfxk619n36rxqqmk-direnv-2.35.0"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/jw2ax71m8dzgs8xybginlsyw79ndyww1-direnv-2.35.0",
"default": true
}
],
"store_path": "/nix/store/jw2ax71m8dzgs8xybginlsyw79ndyww1-direnv-2.35.0"
}
}
},
"go-migrate@4.18.1": {
"last_modified": "2024-12-23T21:10:33Z",
"resolved": "github:NixOS/nixpkgs/de1864217bfa9b5845f465e771e0ecb48b30e02d#go-migrate",
"source": "devbox-search",
"version": "4.18.1",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/rdw2ry3cf5x31lhn44r4bzqz05mizgml-go-migrate-4.18.1",
"default": true
}
],
"store_path": "/nix/store/rdw2ry3cf5x31lhn44r4bzqz05mizgml-go-migrate-4.18.1"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/4ngpwnrfypar87qw0naqvqchmg0frs7c-go-migrate-4.18.1",
"default": true
}
],
"store_path": "/nix/store/4ngpwnrfypar87qw0naqvqchmg0frs7c-go-migrate-4.18.1"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/xzxmns8izzdrflniwfmxlcsd104kxr0k-go-migrate-4.18.1",
"default": true
}
],
"store_path": "/nix/store/xzxmns8izzdrflniwfmxlcsd104kxr0k-go-migrate-4.18.1"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/1261ar46229h0m665r3a151nr340hr30-go-migrate-4.18.1",
"default": true
}
],
"store_path": "/nix/store/1261ar46229h0m665r3a151nr340hr30-go-migrate-4.18.1"
}
}
},
"go-mockery@2.46.3": {
"last_modified": "2024-12-03T12:40:06Z",
"resolved": "github:NixOS/nixpkgs/566e53c2ad750c84f6d31f9ccb9d00f823165550#go-mockery",
"source": "devbox-search",
"version": "2.46.3",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/x12sb45y2cf87cprxj883sh9zyymi9q3-go-mockery-2.46.3",
"default": true
}
],
"store_path": "/nix/store/x12sb45y2cf87cprxj883sh9zyymi9q3-go-mockery-2.46.3"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/zd832ldc76czd9dia85c38r9va2jqsbs-go-mockery-2.46.3",
"default": true
}
],
"store_path": "/nix/store/zd832ldc76czd9dia85c38r9va2jqsbs-go-mockery-2.46.3"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/q0p7ncqhcvcydvp3crdziyv1z6raip61-go-mockery-2.46.3",
"default": true
}
],
"store_path": "/nix/store/q0p7ncqhcvcydvp3crdziyv1z6raip61-go-mockery-2.46.3"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/ch5r2lvzcrgassv50hilb4fpmgip97hd-go-mockery-2.46.3",
"default": true
}
],
"store_path": "/nix/store/ch5r2lvzcrgassv50hilb4fpmgip97hd-go-mockery-2.46.3"
}
}
},
"go-task@3.39.2": {
"last_modified": "2024-11-16T04:25:12Z",
"resolved": "github:NixOS/nixpkgs/34a626458d686f1b58139620a8b2793e9e123bba#go-task",
"source": "devbox-search",
"version": "3.39.2",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/n10k2bgg3kzp5r261m8lyyh1bmzwnxbm-go-task-3.39.2",
"default": true
}
],
"store_path": "/nix/store/n10k2bgg3kzp5r261m8lyyh1bmzwnxbm-go-task-3.39.2"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/bi9d428x6r8hcngb7x7ijihp3ln6qjai-go-task-3.39.2",
"default": true
}
],
"store_path": "/nix/store/bi9d428x6r8hcngb7x7ijihp3ln6qjai-go-task-3.39.2"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/69byf24r00663kdim1yi4p04w53rvsix-go-task-3.39.2",
"default": true
}
],
"store_path": "/nix/store/69byf24r00663kdim1yi4p04w53rvsix-go-task-3.39.2"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/055l0sbqwyhrq8zmzf51lbpgm3asdfz2-go-task-3.39.2",
"default": true
}
],
"store_path": "/nix/store/055l0sbqwyhrq8zmzf51lbpgm3asdfz2-go-task-3.39.2"
}
}
},
"go@1.23.3": {
"last_modified": "2024-12-03T12:40:06Z",
"resolved": "github:NixOS/nixpkgs/566e53c2ad750c84f6d31f9ccb9d00f823165550#go",
"source": "devbox-search",
"version": "1.23.3",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/w5cxqj1wmbl3wp6arpyl90g66hjs0823-go-1.23.3",
"default": true
}
],
"store_path": "/nix/store/w5cxqj1wmbl3wp6arpyl90g66hjs0823-go-1.23.3"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/09zl6c5i31x18w55qskc0kbp32arvvlr-go-1.23.3",
"default": true
}
],
"store_path": "/nix/store/09zl6c5i31x18w55qskc0kbp32arvvlr-go-1.23.3"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/alkrwr7w62qp3160q0azcvnyn0184hw3-go-1.23.3",
"default": true
}
],
"store_path": "/nix/store/alkrwr7w62qp3160q0azcvnyn0184hw3-go-1.23.3"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/zhq8dnjbhwspzdglyq28j74axvqyk86q-go-1.23.3",
"default": true
}
],
"store_path": "/nix/store/zhq8dnjbhwspzdglyq28j74axvqyk86q-go-1.23.3"
}
}
},
"golangci-lint@1.62.2": {
"last_modified": "2024-12-23T21:10:33Z",
"resolved": "github:NixOS/nixpkgs/de1864217bfa9b5845f465e771e0ecb48b30e02d#golangci-lint",
"source": "devbox-search",
"version": "1.62.2",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/5liapbkl2xs5kww2wvs2yv8grhcaswwl-golangci-lint-1.62.2",
"default": true
}
],
"store_path": "/nix/store/5liapbkl2xs5kww2wvs2yv8grhcaswwl-golangci-lint-1.62.2"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/87ihwdp39vxi97q0bfv8isw2p1pyz257-golangci-lint-1.62.2",
"default": true
}
],
"store_path": "/nix/store/87ihwdp39vxi97q0bfv8isw2p1pyz257-golangci-lint-1.62.2"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/73jfn21by312v2jawvmb9rkjhls28ry7-golangci-lint-1.62.2",
"default": true
}
],
"store_path": "/nix/store/73jfn21by312v2jawvmb9rkjhls28ry7-golangci-lint-1.62.2"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/rzvlg3gzv8cgr4qpvsxx1q8pmgdl9j95-golangci-lint-1.62.2",
"default": true
}
],
"store_path": "/nix/store/rzvlg3gzv8cgr4qpvsxx1q8pmgdl9j95-golangci-lint-1.62.2"
}
}
},
"gotools@0.25.0": {
"last_modified": "2024-12-23T21:10:33Z",
"resolved": "github:NixOS/nixpkgs/de1864217bfa9b5845f465e771e0ecb48b30e02d#gotools",
"source": "devbox-search",
"version": "0.25.0",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/v6xjdcrlrr1897i4siink7y3pxjcmkzm-gotools-0.25.0",
"default": true
}
],
"store_path": "/nix/store/v6xjdcrlrr1897i4siink7y3pxjcmkzm-gotools-0.25.0"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/mpgyif6gfs68szd10awin09jc40dg59j-gotools-0.25.0",
"default": true
}
],
"store_path": "/nix/store/mpgyif6gfs68szd10awin09jc40dg59j-gotools-0.25.0"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/bvbzi5qg6fcr9vadisqlvidrf3r7037a-gotools-0.25.0",
"default": true
}
],
"store_path": "/nix/store/bvbzi5qg6fcr9vadisqlvidrf3r7037a-gotools-0.25.0"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/mnnv5iqsa1hcc9v1snyxai3yqzmav9kf-gotools-0.25.0",
"default": true
}
],
"store_path": "/nix/store/mnnv5iqsa1hcc9v1snyxai3yqzmav9kf-gotools-0.25.0"
}
}
},
"hadolint@2.12.0": {
"last_modified": "2024-12-23T21:10:33Z",
"resolved": "github:NixOS/nixpkgs/de1864217bfa9b5845f465e771e0ecb48b30e02d#hadolint",
"source": "devbox-search",
"version": "2.12.0",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/0v36s261w87125xzjd2brmnrcccpa8vg-hadolint-2.12.0",
"default": true
},
{
"name": "doc",
"path": "/nix/store/41rlnh9ir4wdmiabjrjg54z7b3lfm4vf-hadolint-2.12.0-doc"
}
],
"store_path": "/nix/store/0v36s261w87125xzjd2brmnrcccpa8vg-hadolint-2.12.0"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/yrnar1ar1kyjpn9idxa446b7rlnksmcz-hadolint-2.12.0",
"default": true
}
],
"store_path": "/nix/store/yrnar1ar1kyjpn9idxa446b7rlnksmcz-hadolint-2.12.0"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/wcnjdyzj2l0bq29s0z2h82jwhczmw7wj-hadolint-2.12.0",
"default": true
}
],
"store_path": "/nix/store/wcnjdyzj2l0bq29s0z2h82jwhczmw7wj-hadolint-2.12.0"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/3q3vv1lkxiz1bj56nj5h4qp5xn8ns9ij-hadolint-2.12.0",
"default": true
}
],
"store_path": "/nix/store/3q3vv1lkxiz1bj56nj5h4qp5xn8ns9ij-hadolint-2.12.0"
}
}
},
"nodePackages.jsonlint@1.6.3": {
"last_modified": "2024-12-23T21:10:33Z",
"resolved": "github:NixOS/nixpkgs/de1864217bfa9b5845f465e771e0ecb48b30e02d#nodePackages.jsonlint",
"source": "devbox-search",
"version": "1.6.3",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/yvmhz1jldcykk4xlxqjlvh16xgzr2vd9-jsonlint-1.6.3",
"default": true
}
],
"store_path": "/nix/store/yvmhz1jldcykk4xlxqjlvh16xgzr2vd9-jsonlint-1.6.3"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/f5k7x5kmfd91a0kvx4q8n2a6z6x0vnps-jsonlint-1.6.3",
"default": true
}
],
"store_path": "/nix/store/f5k7x5kmfd91a0kvx4q8n2a6z6x0vnps-jsonlint-1.6.3"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/qmv049vhjb9wjb403592h1f0l007bny9-jsonlint-1.6.3",
"default": true
}
],
"store_path": "/nix/store/qmv049vhjb9wjb403592h1f0l007bny9-jsonlint-1.6.3"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/j08p8m0ibi5rpsbhhrr7fqqjc7gwcifd-jsonlint-1.6.3",
"default": true
}
],
"store_path": "/nix/store/j08p8m0ibi5rpsbhhrr7fqqjc7gwcifd-jsonlint-1.6.3"
}
}
},
"protobuf@28.3": {
"last_modified": "2024-12-03T12:40:06Z",
"resolved": "github:NixOS/nixpkgs/566e53c2ad750c84f6d31f9ccb9d00f823165550#protobuf",
"source": "devbox-search",
"version": "28.3",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/q04cfyxpr3ijb038bjwg6h10djlzrvzq-protobuf-28.3",
"default": true
}
],
"store_path": "/nix/store/q04cfyxpr3ijb038bjwg6h10djlzrvzq-protobuf-28.3"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/ar3x733vglzmgwlwqm712chc4lsvmg6l-protobuf-28.3",
"default": true
}
],
"store_path": "/nix/store/ar3x733vglzmgwlwqm712chc4lsvmg6l-protobuf-28.3"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/4xfgsh5dis62pr1776qnk6x6j5jn8zn0-protobuf-28.3",
"default": true
}
],
"store_path": "/nix/store/4xfgsh5dis62pr1776qnk6x6j5jn8zn0-protobuf-28.3"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/q9masc42g6rwzkpi8ma4qwbnmkzj7vz2-protobuf-28.3",
"default": true
}
],
"store_path": "/nix/store/q9masc42g6rwzkpi8ma4qwbnmkzj7vz2-protobuf-28.3"
}
}
},
"protoc-gen-go-grpc@1.3.0": {
"last_modified": "2024-12-03T12:40:06Z",
"resolved": "github:NixOS/nixpkgs/566e53c2ad750c84f6d31f9ccb9d00f823165550#protoc-gen-go-grpc",
"source": "devbox-search",
"version": "1.3.0",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/lak8kwpnagiwham2byzg3qilr78bvqfv-protoc-gen-go-grpc-1.3.0",
"default": true
}
],
"store_path": "/nix/store/lak8kwpnagiwham2byzg3qilr78bvqfv-protoc-gen-go-grpc-1.3.0"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/8chmakb7pix8kj4jv9gyyvdav2l22idk-protoc-gen-go-grpc-1.3.0",
"default": true
}
],
"store_path": "/nix/store/8chmakb7pix8kj4jv9gyyvdav2l22idk-protoc-gen-go-grpc-1.3.0"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/7v7jj7d21im7saqy41vbrlwqjzzagnqp-protoc-gen-go-grpc-1.3.0",
"default": true
}
],
"store_path": "/nix/store/7v7jj7d21im7saqy41vbrlwqjzzagnqp-protoc-gen-go-grpc-1.3.0"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/d79cxdsbdqs1l4aph985lflcix67bkb8-protoc-gen-go-grpc-1.3.0",
"default": true
}
],
"store_path": "/nix/store/d79cxdsbdqs1l4aph985lflcix67bkb8-protoc-gen-go-grpc-1.3.0"
}
}
},
"protoc-gen-go@1.35.1": {
"last_modified": "2024-11-16T04:25:12Z",
"resolved": "github:NixOS/nixpkgs/34a626458d686f1b58139620a8b2793e9e123bba#protoc-gen-go",
"source": "devbox-search",
"version": "1.35.1",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/5i406gv649fg1g7s8rcajbknm0kvsm85-protoc-gen-go-1.35.1",
"default": true
}
],
"store_path": "/nix/store/5i406gv649fg1g7s8rcajbknm0kvsm85-protoc-gen-go-1.35.1"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/i42sm8xdgh3v1434q0haxqv0akxw2k60-protoc-gen-go-1.35.1",
"default": true
}
],
"store_path": "/nix/store/i42sm8xdgh3v1434q0haxqv0akxw2k60-protoc-gen-go-1.35.1"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/34b5ry7cvnvckvgaf2xd4a46p78z1w2i-protoc-gen-go-1.35.1",
"default": true
}
],
"store_path": "/nix/store/34b5ry7cvnvckvgaf2xd4a46p78z1w2i-protoc-gen-go-1.35.1"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/0l0x36ajfyr7gav993hw2i4g39zl9x08-protoc-gen-go-1.35.1",
"default": true
}
],
"store_path": "/nix/store/0l0x36ajfyr7gav993hw2i4g39zl9x08-protoc-gen-go-1.35.1"
}
}
},
"protolint@0.50.5": {
"last_modified": "2024-11-28T07:51:56Z",
"resolved": "github:NixOS/nixpkgs/226216574ada4c3ecefcbbec41f39ce4655f78ef#protolint",
"source": "devbox-search",
"version": "0.50.5",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/039zwhkiv8klph9nk2yicyrddh3d0xxh-protolint-0.50.5",
"default": true
}
],
"store_path": "/nix/store/039zwhkiv8klph9nk2yicyrddh3d0xxh-protolint-0.50.5"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/rhmmdymbshdw6f8s9v00x1xh4kl4dv94-protolint-0.50.5",
"default": true
}
],
"store_path": "/nix/store/rhmmdymbshdw6f8s9v00x1xh4kl4dv94-protolint-0.50.5"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/kinv97rh0zsa45mnhnll9qnd4i0r13a0-protolint-0.50.5",
"default": true
}
],
"store_path": "/nix/store/kinv97rh0zsa45mnhnll9qnd4i0r13a0-protolint-0.50.5"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/1qz26rz830l9zf2dlg27mvgk9g53jdxm-protolint-0.50.5",
"default": true
}
],
"store_path": "/nix/store/1qz26rz830l9zf2dlg27mvgk9g53jdxm-protolint-0.50.5"
}
}
},
"sqlc@1.27.0": {
"last_modified": "2024-12-23T21:10:33Z",
"resolved": "github:NixOS/nixpkgs/de1864217bfa9b5845f465e771e0ecb48b30e02d#sqlc",
"source": "devbox-search",
"version": "1.27.0",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/n17zwlr8mc6b3sz7zl1wc8b8b9i1w119-sqlc-1.27.0",
"default": true
}
],
"store_path": "/nix/store/n17zwlr8mc6b3sz7zl1wc8b8b9i1w119-sqlc-1.27.0"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/4d4d2fz8cylhsypxg827hap44myrf3kx-sqlc-1.27.0",
"default": true
}
],
"store_path": "/nix/store/4d4d2fz8cylhsypxg827hap44myrf3kx-sqlc-1.27.0"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/1qcz74l1g13zzjkzpcbc2pr99myjlrcs-sqlc-1.27.0",
"default": true
}
],
"store_path": "/nix/store/1qcz74l1g13zzjkzpcbc2pr99myjlrcs-sqlc-1.27.0"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/80gxhvj6mjh0k79i88x4ks0kr705xpj3-sqlc-1.27.0",
"default": true
}
],
"store_path": "/nix/store/80gxhvj6mjh0k79i88x4ks0kr705xpj3-sqlc-1.27.0"
}
}
},
"yamllint@1.35.1": {
"last_modified": "2024-12-23T21:10:33Z",
"resolved": "github:NixOS/nixpkgs/de1864217bfa9b5845f465e771e0ecb48b30e02d#yamllint",
"source": "devbox-search",
"version": "1.35.1",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/f119sg47lh576bj7s83rmfdphwjxykkq-python3.12-yamllint-1.35.1",
"default": true
},
{
"name": "dist",
"path": "/nix/store/0h54cmwyz2d6axldh6894dj8hwavyarc-python3.12-yamllint-1.35.1-dist"
}
],
"store_path": "/nix/store/f119sg47lh576bj7s83rmfdphwjxykkq-python3.12-yamllint-1.35.1"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/3zgl49ap4wlg6h9g5r9m8lhwys8v566q-python3.12-yamllint-1.35.1",
"default": true
},
{
"name": "dist",
"path": "/nix/store/3kiidcnnizy76d8hly4nmwjwig597wwk-python3.12-yamllint-1.35.1-dist"
}
],
"store_path": "/nix/store/3zgl49ap4wlg6h9g5r9m8lhwys8v566q-python3.12-yamllint-1.35.1"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/jx6wrsl5scdggdq9j79vdr4pygirp7c3-python3.12-yamllint-1.35.1",
"default": true
},
{
"name": "dist",
"path": "/nix/store/xf8h6cs767i3yw417sivr8sy27jpszrl-python3.12-yamllint-1.35.1-dist"
}
],
"store_path": "/nix/store/jx6wrsl5scdggdq9j79vdr4pygirp7c3-python3.12-yamllint-1.35.1"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/67dhdiaxkryhr9bwyg7lfpmljcghvjwb-python3.12-yamllint-1.35.1",
"default": true
},
{
"name": "dist",
"path": "/nix/store/jrcv8wi52hb9rv84c01hayvjz2kfiwpf-python3.12-yamllint-1.35.1-dist"
}
],
"store_path": "/nix/store/67dhdiaxkryhr9bwyg7lfpmljcghvjwb-python3.12-yamllint-1.35.1"
}
}
}
}
}
-1
View File
@@ -8,7 +8,6 @@ require (
github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1
github.com/go-playground/validator/v10 v10.23.0
github.com/golang-migrate/migrate/v4 v4.18.1
github.com/golang/protobuf v1.5.4
github.com/jackc/pgx/v5 v5.7.1
github.com/lib/pq v1.10.9
github.com/stretchr/testify v1.10.0
+11 -9
View File
@@ -3,6 +3,10 @@
version: '3'
vars:
CONTEXT: ..
OUT_DIR: out
includes:
deps:
dir: "{{.CONTEXT}}"
@@ -23,11 +27,6 @@ includes:
dir: "{{.CONTEXT}}"
taskfile: database.yml
vars:
CONTEXT: ..
OUT_DIR: out
OUT_FILE: "{{.OUT_DIR}}/main_grpc"
tasks:
generate:
deps:
@@ -38,9 +37,9 @@ tasks:
- task code:lint
- task db:lint
- task yaml:lint
- task json:lint
- task docker:lint
- task compose:lint
- task shell:lint
- task proto:lint
lint:fix:
cmds:
@@ -48,9 +47,9 @@ tasks:
- task proto:lint:fix
- task db:lint
- task yaml:lint
- task json:lint:fix
- task docker:lint
- task compose:lint
- task shell:lint
code:lint:
cmds:
- golangci-lint run
@@ -61,9 +60,12 @@ tasks:
yaml:lint:
cmds:
- yamllint . -s
shell:lint:
json:lint:
cmds:
- shellcheck --shell=sh scripts/install-deps.sh
- jsonlint devbox.json -q -s
json:lint:fix:
cmds:
- jsonlint devbox.json -q -s -i
docs:
cmds:
- godoc -http=:6060
+1 -1
View File
@@ -21,4 +21,4 @@ tasks:
- docker compose -f {{.COMPOSE_FILE}} down
lint:
cmds:
- docker compose -f {{.COMPOSE_FILE}} config
- docker compose -f {{.COMPOSE_FILE}} config -q --resolve-image-digests
+2 -2
View File
@@ -12,10 +12,10 @@ tasks:
- |
task compose:up:bg
task db:mig:run
sqlc generate --file ../sqlc.yml
sqlc generate --file sqlc.yml
lint:
cmds:
- sqlc vet --file ../sqlc.yml
- sqlc vet --file sqlc.yml
mig:create:
cmds:
- |
+1 -15
View File
@@ -4,22 +4,8 @@
version: '3'
tasks:
install:
download:
cmds:
- go install golang.org/x/tools/cmd/godoc@v0.29.0
- go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.2
- go install github.com/yoheimuta/protolint/cmd/protolint@v0.52.0
- go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.0
- go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.5.1
- go install github.com/zabio3/godolint@v1.0.3
- go install github.com/wasilibs/go-yamllint/cmd/yamllint@v1.35.1
- go install github.com/sqlc-dev/sqlc/cmd/sqlc@v1.27.0
- |
go install -tags 'postgres' \
github.com/golang-migrate/migrate/v4/cmd/migrate@v4.18.1
- go install github.com/vektra/mockery/v2@v2.50.0
- curl -sfL https://direnv.net/install.sh | bash
- direnv allow
- go mod download
tidy:
cmds:
+1 -1
View File
@@ -9,7 +9,7 @@ vars:
tasks:
lint:
cmds:
- godolint {{.DOCKERFILE}}
- hadolint {{.DOCKERFILE}} -t none
build:
cmds:
- docker build -t {{.IMAGE_NAME}} -f {{.DOCKERFILE}} .
-7
View File
@@ -1,7 +0,0 @@
#!/bin/sh
# Install Taskfile
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/binintegration
# Install dependencies
task deps:install
+4 -11
View File
@@ -3,11 +3,6 @@
version: '3'
includes:
docker:
taskfile: docker.yml
internal: true
vars:
COVERAGE_FILE: "{{.OUT_DIR}}/coverage.out"
@@ -43,15 +38,13 @@ tasks:
fi
silent: true
integration:
deps:
- docker:build
cmds:
- task docker:build
- task test:integration:nobuild
integration:nocache:
deps:
- docker:build
cmds:
- go test -count=1 -v test/...
- task docker:build
- go test -count=1 -v ./test/...
integration:nobuild:
cmds:
- go test -v test/...
- go test -v ./test/...
+1 -1
View File
@@ -38,7 +38,7 @@ func createAPIContainer(t *testing.T, ctx context.Context, config *apiContainerC
ExposedPorts: []string{port.Port()},
WaitingFor: wait.ForLog("Listening on port 8080"),
Networks: []string{config.Network.Name},
Entrypoint: []string{fmt.Sprintf("./bin/%s", config.ServiceName)},
Entrypoint: []string{fmt.Sprintf("./%s", config.ServiceName)},
}
container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
+1 -1
View File
@@ -50,7 +50,7 @@ func createQueueContainer(t *testing.T, ctx context.Context, config *queueContai
},
Networks: []string{config.Network.Name},
WaitingFor: wait.ForLog("Listening to queue"),
Entrypoint: []string{fmt.Sprintf("./bin/%s", config.ServiceName)},
Entrypoint: []string{fmt.Sprintf("./%s", config.ServiceName)},
}
container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package winterm
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package winterm
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package winterm
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package winterm
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package winterm
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package winterm
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package winterm
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package winterm
-1
View File
@@ -63,7 +63,6 @@ type Marshaler interface {
//
// Both generic interface{} and concrete types are valid unmarshal destination types. When unmarshaling a document
// into an empty interface the Unmarshaler will store one of these values:
//
// bool, for boolean values
// document.Number, for arbitrary-precision numbers (int64, float64, big.Int, big.Float)
// string, for string values
+5 -5
View File
@@ -4,21 +4,21 @@ shape serializer function in which a xml.Value will be passed around.
Resources followed: https://smithy.io/2.0/spec/protocol-traits.html#xml-bindings
# Member Element
Member Element
Member element should be used to encode xml shapes into xml elements except for flattened xml shapes. Member element
write their own element start tag. These elements should always be closed.
# Flattened Element
Flattened Element
Flattened element should be used to encode shapes marked with flattened trait into xml elements. Flattened element
do not write a start tag, and thus should not be closed.
# Simple types encoding
Simple types encoding
All simple type methods on value such as String(), Long() etc; auto close the associated member element.
# Array
Array
Array returns the collection encoder. It has two modes, wrapped and flattened encoding.
@@ -32,7 +32,7 @@ If a shape is marked as flattened, Array() will use the shape element name as wr
<flattenedAarray>apple</flattenedArray><flattenedArray>tree</flattenedArray>
# Map
Map
Map is the map encoder. It has two modes, wrapped and flattened encoding.
+2 -2
View File
@@ -14,7 +14,7 @@
// handler. A handler could be something like an HTTP Client that round trips an
// API operation over HTTP.
//
// # Smithy Middleware Stack
// Smithy Middleware Stack
//
// A Stack is a collection of middleware that wrap a handler. The stack can be
// broken down into discreet steps. Each step may contain zero or more middleware
@@ -48,7 +48,7 @@
// the request message. Deserializes the response into a structured type or
// error above stacks can react to.
//
// # Adding Middleware to a Stack Step
// Adding Middleware to a Stack Step
//
// Middleware can be added to a step front or back, or relative, by name, to an
// existing middleware in that stack. If a middleware does not have a name, a
-2
View File
@@ -167,7 +167,6 @@ func (b *ExponentialBackOff) Reset() {
}
// NextBackOff calculates the next backoff interval using the formula:
//
// Randomized interval = RetryInterval * (1 ± RandomizationFactor)
func (b *ExponentialBackOff) NextBackOff() time.Duration {
// Make sure we have not gone over the maximum elapsed time.
@@ -201,7 +200,6 @@ func (b *ExponentialBackOff) incrementCurrentInterval() {
}
// Returns a random value from the following interval:
//
// [currentInterval - randomizationFactor * currentInterval, currentInterval + randomizationFactor * currentInterval].
func getRandomValueFromInterval(randomizationFactor, random float64, currentInterval time.Duration) time.Duration {
if randomizationFactor == 0 {
-1
View File
@@ -18,7 +18,6 @@
// tag is deprecated and thus should not be used.
// Go versions prior to 1.4 are disabled because they use a different layout
// for interfaces which make the implementation of unsafeReflectValue more complex.
//go:build !js && !appengine && !safe && !disableunsafe && go1.4
// +build !js,!appengine,!safe,!disableunsafe,go1.4
package spew
-1
View File
@@ -16,7 +16,6 @@
// when the code is running on Google App Engine, compiled by GopherJS, or
// "-tags safe" is added to the go build command line. The "disableunsafe"
// tag is deprecated and thus should not be used.
//go:build js || appengine || safe || disableunsafe || !go1.4
// +build js appengine safe disableunsafe !go1.4
package spew
+5 -5
View File
@@ -254,14 +254,14 @@ pointer addresses used to indirect to the final value. It provides the
following features over the built-in printing facilities provided by the fmt
package:
- Pointers are dereferenced and followed
- Circular data structures are detected and handled properly
- Custom Stringer/error interfaces are optionally invoked, including
* Pointers are dereferenced and followed
* Circular data structures are detected and handled properly
* Custom Stringer/error interfaces are optionally invoked, including
on unexported types
- Custom types which only implement the Stringer/error interfaces via
* Custom types which only implement the Stringer/error interfaces via
a pointer receiver are optionally invoked when passing non-pointer
variables
- Byte arrays and slices are dumped like the hexdump -C command which
* Byte arrays and slices are dumped like the hexdump -C command which
includes offsets, byte values in hex, and ASCII output
The configuration options are controlled by modifying the public members
+24 -30
View File
@@ -21,36 +21,35 @@ debugging.
A quick overview of the additional features spew provides over the built-in
printing facilities for Go data types are as follows:
- Pointers are dereferenced and followed
- Circular data structures are detected and handled properly
- Custom Stringer/error interfaces are optionally invoked, including
* Pointers are dereferenced and followed
* Circular data structures are detected and handled properly
* Custom Stringer/error interfaces are optionally invoked, including
on unexported types
- Custom types which only implement the Stringer/error interfaces via
* Custom types which only implement the Stringer/error interfaces via
a pointer receiver are optionally invoked when passing non-pointer
variables
- Byte arrays and slices are dumped like the hexdump -C command which
* Byte arrays and slices are dumped like the hexdump -C command which
includes offsets, byte values in hex, and ASCII output (only when using
Dump style)
There are two different approaches spew allows for dumping Go data structures:
- Dump style which prints with newlines, customizable indentation,
* Dump style which prints with newlines, customizable indentation,
and additional debug information such as types and all pointer addresses
used to indirect to the final value
- A custom Formatter interface that integrates cleanly with the standard fmt
* A custom Formatter interface that integrates cleanly with the standard fmt
package and replaces %v, %+v, %#v, and %#+v to provide inline printing
similar to the default %v while providing the additional functionality
outlined above and passing unsupported format verbs such as %x and %q
along to fmt
# Quick Start
Quick Start
This section demonstrates how to quickly get started with spew. See the
sections below for further details on formatting and configuration options.
To dump a variable with full newlines, indentation, type, and pointer
information use Dump, Fdump, or Sdump:
spew.Dump(myVar1, myVar2, ...)
spew.Fdump(someWriter, myVar1, myVar2, ...)
str := spew.Sdump(myVar1, myVar2, ...)
@@ -59,13 +58,12 @@ Alternatively, if you would prefer to use format strings with a compacted inline
printing style, use the convenience wrappers Printf, Fprintf, etc with
%v (most compact), %+v (adds pointer addresses), %#v (adds types), or
%#+v (adds types and pointer addresses):
spew.Printf("myVar1: %v -- myVar2: %+v", myVar1, myVar2)
spew.Printf("myVar3: %#v -- myVar4: %#+v", myVar3, myVar4)
spew.Fprintf(someWriter, "myVar1: %v -- myVar2: %+v", myVar1, myVar2)
spew.Fprintf(someWriter, "myVar3: %#v -- myVar4: %#+v", myVar3, myVar4)
# Configuration Options
Configuration Options
Configuration of spew is handled by fields in the ConfigState type. For
convenience, all of the top-level functions use a global state available
@@ -76,38 +74,37 @@ equivalent to the top-level functions. This allows concurrent configuration
options. See the ConfigState documentation for more details.
The following configuration options are available:
- Indent
* Indent
String to use for each indentation level for Dump functions.
It is a single space by default. A popular alternative is "\t".
- MaxDepth
* MaxDepth
Maximum number of levels to descend into nested data structures.
There is no limit by default.
- DisableMethods
* DisableMethods
Disables invocation of error and Stringer interface methods.
Method invocation is enabled by default.
- DisablePointerMethods
* DisablePointerMethods
Disables invocation of error and Stringer interface methods on types
which only accept pointer receivers from non-pointer variables.
Pointer method invocation is enabled by default.
- DisablePointerAddresses
* DisablePointerAddresses
DisablePointerAddresses specifies whether to disable the printing of
pointer addresses. This is useful when diffing data structures in tests.
- DisableCapacities
* DisableCapacities
DisableCapacities specifies whether to disable the printing of
capacities for arrays, slices, maps and channels. This is useful when
diffing data structures in tests.
- ContinueOnMethod
* ContinueOnMethod
Enables recursion into types after invoking error and Stringer interface
methods. Recursion after method invocation is disabled by default.
- SortKeys
* SortKeys
Specifies map keys should be sorted before being printed. Use
this to have a more deterministic, diffable output. Note that
only native types (bool, int, uint, floats, uintptr and string)
@@ -116,12 +113,12 @@ The following configuration options are available:
reflect.Value.String() output which guarantees display
stability. Natural map order is used by default.
- SpewKeys
* SpewKeys
Specifies that, as a last resort attempt, map keys should be
spewed to strings and sorted by those strings. This is only
considered if SortKeys is true.
# Dump Usage
Dump Usage
Simply call spew.Dump with a list of variables you want to dump:
@@ -136,7 +133,7 @@ A third option is to call spew.Sdump to get the formatted output as a string:
str := spew.Sdump(myVar1, myVar2, ...)
# Sample Dump Output
Sample Dump Output
See the Dump example for details on the setup of the types and variables being
shown here.
@@ -153,14 +150,13 @@ shown here.
Byte (and uint8) arrays and slices are displayed uniquely like the hexdump -C
command as shown.
([]uint8) (len=32 cap=32) {
00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 |............... |
00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 |!"#$%&'()*+,-./0|
00000020 31 32 |12|
}
# Custom Formatter
Custom Formatter
Spew provides a custom formatter that implements the fmt.Formatter interface
so that it integrates cleanly with standard fmt package printing functions. The
@@ -174,7 +170,7 @@ standard fmt package for formatting. In addition, the custom formatter ignores
the width and precision arguments (however they will still work on the format
specifiers not handled by the custom formatter).
# Custom Formatter Usage
Custom Formatter Usage
The simplest way to make use of the spew custom formatter is to call one of the
convenience functions such as spew.Printf, spew.Println, or spew.Printf. The
@@ -188,17 +184,15 @@ functions have syntax you are most likely already familiar with:
See the Index for the full list convenience functions.
# Sample Formatter Output
Sample Formatter Output
Double pointer to a uint8:
%v: <**>5
%+v: <**>(0xf8400420d0->0xf8400420c8)5
%#v: (**uint8)5
%#+v: (**uint8)(0xf8400420d0->0xf8400420c8)5
Pointer to circular struct with a uint8 field and a pointer to itself:
%v: <*>{1 <*><shown>}
%+v: <*>(0xf84003e260){ui8:1 c:<*>(0xf84003e260)<shown>}
%#v: (*main.circular){ui8:(uint8)1 c:(*main.circular)<shown>}
@@ -207,7 +201,7 @@ Pointer to circular struct with a uint8 field and a pointer to itself:
See the Printf example for details on the setup of variables being shown
here.
# Errors
Errors
Since it is possible for custom Stringer/error interfaces to panic, spew
detects them and handles them internally by printing the panic information
+5 -5
View File
@@ -488,14 +488,14 @@ pointer addresses used to indirect to the final value. It provides the
following features over the built-in printing facilities provided by the fmt
package:
- Pointers are dereferenced and followed
- Circular data structures are detected and handled properly
- Custom Stringer/error interfaces are optionally invoked, including
* Pointers are dereferenced and followed
* Circular data structures are detected and handled properly
* Custom Stringer/error interfaces are optionally invoked, including
on unexported types
- Custom types which only implement the Stringer/error interfaces via
* Custom types which only implement the Stringer/error interfaces via
a pointer receiver are optionally invoked when passing non-pointer
variables
- Byte arrays and slices are dumped like the hexdump -C command which
* Byte arrays and slices are dumped like the hexdump -C command which
includes offsets, byte values in hex, and ASCII output
The configuration options are controlled by an exported package global,
-2
View File
@@ -1,6 +1,4 @@
//go:build go1.8
// +build go1.8
// Code generated by "httpsnoop/codegen"; DO NOT EDIT.
package httpsnoop
-2
View File
@@ -1,6 +1,4 @@
//go:build !go1.8
// +build !go1.8
// Code generated by "httpsnoop/codegen"; DO NOT EDIT.
package httpsnoop
-1
View File
@@ -170,7 +170,6 @@ var Glb = prefix([]byte("\x67\x6C\x54\x46\x02\x00\x00\x00"),
// TzIf matches a Time Zone Information Format (TZif) file.
// See more: https://tools.ietf.org/id/draft-murchison-tzdist-tzif-00.html#rfc.section.3
// Its header structure is shown below:
//
// +---------------+---+
// | magic (4) | <-+-- version (1)
// +---------------+---+---------------------------------------+
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package oleutil
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package oleutil
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package oleutil
-1
View File
@@ -1,7 +1,6 @@
// This file is here so go get succeeds as without it errors with:
// no buildable Go source files in ...
//
//go:build !windows
// +build !windows
package oleutil
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
+1 -1
View File
@@ -84,7 +84,7 @@ func (sac *SafeArrayConversion) ToValueArray() (values []interface{}) {
safeArrayGetElement(sac.Array, i, unsafe.Pointer(&v))
values[i] = v
case VT_BSTR:
v, _ := safeArrayGetElementString(sac.Array, i)
v , _ := safeArrayGetElementString(sac.Array, i)
values[i] = v
case VT_VARIANT:
var v VARIANT
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build 386
// +build 386
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build amd64
// +build amd64
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build arm
// +build arm
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows && 386
// +build windows,386
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows && amd64
// +build windows,amd64
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows && arm
// +build windows,arm
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build ppc64le
// +build ppc64le
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build s390x
// +build s390x
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package ole
-1
View File
@@ -1,4 +1,3 @@
//go:build !windows
// +build !windows
package ole
-1
View File
@@ -29,7 +29,6 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//go:build purego || appengine || js
// +build purego appengine js
// This file contains an implementation of proto field accesses using package reflect.
-1
View File
@@ -26,7 +26,6 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//go:build purego || appengine || js
// +build purego appengine js
// This file contains an implementation of proto field accesses using package reflect.
-1
View File
@@ -29,7 +29,6 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//go:build !purego && !appengine && !js
// +build !purego,!appengine,!js
// This file contains the implementation of the proto field accesses using package unsafe.
-1
View File
@@ -26,7 +26,6 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//go:build !purego && !appengine && !js
// +build !purego,!appengine,!js
// This file contains the implementation of the proto field accesses using package unsafe.
-2
View File
@@ -2004,14 +2004,12 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler {
// makeUnmarshalOneof makes an unmarshaler for oneof fields.
// for:
//
// message Msg {
// oneof F {
// int64 X = 1;
// float64 Y = 2;
// }
// }
//
// typ is the type of the concrete entry for a oneof case (e.g. Msg_X).
// ityp is the interface type of the oneof field (e.g. isMsg_F).
// unmarshal is the unmarshaler for the base type of the oneof case (e.g. int64).
-3
View File
@@ -1,3 +0,0 @@
# This source code refers to The Go Authors for copyright purposes.
# The master list of authors is in the main Go distribution,
# visible at http://tip.golang.org/AUTHORS.
-3
View File
@@ -1,3 +0,0 @@
# This source code was written by the Go contributors.
# The master list of contributors is in the main Go distribution,
# visible at http://tip.golang.org/CONTRIBUTORS.
-28
View File
@@ -1,28 +0,0 @@
Copyright 2010 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-62
View File
@@ -1,62 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: github.com/golang/protobuf/ptypes/empty/empty.proto
package empty
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
emptypb "google.golang.org/protobuf/types/known/emptypb"
reflect "reflect"
)
// Symbols defined in public import of google/protobuf/empty.proto.
type Empty = emptypb.Empty
var File_github_com_golang_protobuf_ptypes_empty_empty_proto protoreflect.FileDescriptor
var file_github_com_golang_protobuf_ptypes_empty_empty_proto_rawDesc = []byte{
0x0a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,
0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,
0x70, 0x65, 0x73, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x3b, 0x65, 0x6d,
0x70, 0x74, 0x79, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var file_github_com_golang_protobuf_ptypes_empty_empty_proto_goTypes = []interface{}{}
var file_github_com_golang_protobuf_ptypes_empty_empty_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_github_com_golang_protobuf_ptypes_empty_empty_proto_init() }
func file_github_com_golang_protobuf_ptypes_empty_empty_proto_init() {
if File_github_com_golang_protobuf_ptypes_empty_empty_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_github_com_golang_protobuf_ptypes_empty_empty_proto_rawDesc,
NumEnums: 0,
NumMessages: 0,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_github_com_golang_protobuf_ptypes_empty_empty_proto_goTypes,
DependencyIndexes: file_github_com_golang_protobuf_ptypes_empty_empty_proto_depIdxs,
}.Build()
File_github_com_golang_protobuf_ptypes_empty_empty_proto = out.File
file_github_com_golang_protobuf_ptypes_empty_empty_proto_rawDesc = nil
file_github_com_golang_protobuf_ptypes_empty_empty_proto_goTypes = nil
file_github_com_golang_protobuf_ptypes_empty_empty_proto_depIdxs = nil
}
-1
View File
@@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build js
// +build js
package uuid
-1
View File
@@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build !js
// +build !js
package uuid
+1
View File
@@ -25,6 +25,7 @@ var jsonNull = []byte("null")
// } else {
// // NULL value
// }
//
type NullUUID struct {
UUID UUID
Valid bool // Valid is true if UUID is not NULL
-2
View File
@@ -187,12 +187,10 @@ func Must(uuid UUID, err error) UUID {
}
// Validate returns an error if s is not a properly formatted UUID in one of the following formats:
//
// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
//
// It returns an error if the format is invalid, otherwise nil.
func Validate(s string) error {
switch len(s) {
-1
View File
@@ -19,7 +19,6 @@ var typeSQLScanner = reflect.TypeOf((*sql.Scanner)(nil)).Elem()
// slice of any dimension.
//
// For example:
//
// db.Query(`SELECT * FROM t WHERE id = ANY($1)`, pq.Array([]int{235, 401}))
//
// var x []sql.NullInt64
+37 -24
View File
@@ -27,7 +27,9 @@ You can also connect to a database using a URL. For example:
connStr := "postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full"
db, err := sql.Open("postgres", connStr)
# Connection String Parameters
Connection String Parameters
Similarly to libpq, when establishing a connection using pq you are expected to
supply a connection string containing zero or more parameters.
@@ -40,29 +42,29 @@ them in the options parameter.
For compatibility with libpq, the following special connection parameters are
supported:
- dbname - The name of the database to connect to
- user - The user to sign in as
- password - The user's password
- host - The host to connect to. Values that start with / are for unix
* dbname - The name of the database to connect to
* user - The user to sign in as
* password - The user's password
* host - The host to connect to. Values that start with / are for unix
domain sockets. (default is localhost)
- port - The port to bind to. (default is 5432)
- sslmode - Whether or not to use SSL (default is require, this is not
* port - The port to bind to. (default is 5432)
* sslmode - Whether or not to use SSL (default is require, this is not
the default for libpq)
- fallback_application_name - An application_name to fall back to if one isn't provided.
- connect_timeout - Maximum wait for connection, in seconds. Zero or
* fallback_application_name - An application_name to fall back to if one isn't provided.
* connect_timeout - Maximum wait for connection, in seconds. Zero or
not specified means wait indefinitely.
- sslcert - Cert file location. The file must contain PEM encoded data.
- sslkey - Key file location. The file must contain PEM encoded data.
- sslrootcert - The location of the root certificate file. The file
* sslcert - Cert file location. The file must contain PEM encoded data.
* sslkey - Key file location. The file must contain PEM encoded data.
* sslrootcert - The location of the root certificate file. The file
must contain PEM encoded data.
Valid values for sslmode are:
- disable - No SSL
- require - Always SSL (skip verification)
- verify-ca - Always SSL (verify that the certificate presented by the
* disable - No SSL
* require - Always SSL (skip verification)
* verify-ca - Always SSL (verify that the certificate presented by the
server was signed by a trusted CA)
- verify-full - Always SSL (verify that the certification presented by
* verify-full - Always SSL (verify that the certification presented by
the server was signed by a trusted CA and the server host name
matches the one in the certificate)
@@ -96,7 +98,9 @@ provided connection parameters.
The pgpass mechanism as described in http://www.postgresql.org/docs/current/static/libpq-pgpass.html
is supported, but on Windows PGPASSFILE must be specified explicitly.
# Queries
Queries
database/sql does not dictate any specific format for parameter
markers in query strings, and pq uses the Postgres-native ordinal markers,
@@ -121,7 +125,9 @@ For more details on RETURNING, see the Postgres documentation:
For additional instructions on querying see the documentation for the database/sql package.
# Data Types
Data Types
Parameters pass through driver.DefaultParameterConverter before they are handled
by this package. When the binary_parameters connection option is enabled,
@@ -139,7 +145,9 @@ This package returns the following types for values from the PostgreSQL backend:
All other types are returned directly from the backend as []byte values in text format.
# Errors
Errors
pq may return errors of type *pq.Error which can be interrogated for error details:
@@ -149,7 +157,8 @@ pq may return errors of type *pq.Error which can be interrogated for error detai
See the pq.Error type for details.
# Bulk imports
Bulk imports
You can perform bulk imports by preparing a statement returned by pq.CopyIn (or
pq.CopyInSchema) in an explicit transaction (sql.Tx). The returned statement
@@ -197,7 +206,9 @@ Usage example:
log.Fatal(err)
}
# Notifications
Notifications
PostgreSQL supports a simple publish/subscribe model over database
connections. See http://www.postgresql.org/docs/current/static/sql-notify.html
@@ -230,7 +241,9 @@ bytes by the PostgreSQL server.
You can find a complete, working example of Listener usage at
https://godoc.org/github.com/lib/pq/example/listen.
# Kerberos Support
Kerberos Support
If you need support for Kerberos authentication, add the following to your main
package:
@@ -246,10 +259,10 @@ don't have to download unnecessary dependencies.
When imported, additional connection string parameters are supported:
- krbsrvname - GSS (Kerberos) service name when constructing the
* krbsrvname - GSS (Kerberos) service name when constructing the
SPN (default is `postgres`). This will be combined with the host
to form the full SPN: `krbsrvname/host`.
- krbspn - GSS (Kerberos) SPN. This takes priority over
* krbspn - GSS (Kerberos) SPN. This takes priority over
`krbsrvname` if present.
*/
package pq
+5 -5
View File
@@ -330,10 +330,10 @@ func (l *ListenerConn) sendSimpleQuery(q string) (err error) {
// ExecSimpleQuery executes a "simple query" (i.e. one with no bindable
// parameters) on the connection. The possible return values are:
// 1. "executed" is true; the query was executed to completion on the
// 1) "executed" is true; the query was executed to completion on the
// database server. If the query failed, err will be set to the error
// returned by the database, otherwise err will be nil.
// 2. If "executed" is false, the query could not be executed on the remote
// 2) If "executed" is false, the query could not be executed on the remote
// server. err will be non-nil.
//
// After a call to ExecSimpleQuery has returned an executed=false value, the
@@ -541,12 +541,12 @@ func (l *Listener) NotificationChannel() <-chan *Notification {
// connection can not be re-established.
//
// Listen will only fail in three conditions:
// 1. The channel is already open. The returned error will be
// 1) The channel is already open. The returned error will be
// ErrChannelAlreadyOpen.
// 2. The query was executed on the remote server, but PostgreSQL returned an
// 2) The query was executed on the remote server, but PostgreSQL returned an
// error message in response to the query. The returned error will be a
// pq.Error containing the information the server supplied.
// 3. Close is called on the Listener before the request could be completed.
// 3) Close is called on the Listener before the request could be completed.
//
// The channel name is case-sensitive.
func (l *Listener) Listen(channel string) error {
+3
View File
@@ -25,6 +25,7 @@
// Package scram implements a SCRAM-{SHA-1,etc} client per RFC5802.
//
// http://tools.ietf.org/html/rfc5802
//
package scram
import (
@@ -52,6 +53,7 @@ import (
// if client.Err() != nil {
// // auth failed
// }
//
type Client struct {
newHash func() hash.Hash
@@ -72,6 +74,7 @@ type Client struct {
// For SCRAM-SHA-256, for example, use:
//
// client := scram.NewClient(sha256.New, user, pass)
//
func NewClient(newHash func() hash.Hash, user, pass string) *Client {
c := &Client{
newHash: newHash,
+4 -3
View File
@@ -19,7 +19,7 @@
// More importantly, it provides tools and wrappers to work with
// hash.Hash-based digests with little effort.
//
// # Basics
// Basics
//
// The format of a digest is simply a string with two parts, dubbed the
// "algorithm" and the "digest", separated by a colon:
@@ -42,7 +42,7 @@
// obtained, comparisons are cheap, quick and simple to express with the
// standard equality operator.
//
// # Verification
// Verification
//
// The main benefit of using the Digest type is simple verification against a
// given digest. The Verifier interface, modeled after the stdlib hash.Hash
@@ -50,7 +50,7 @@
// writing is complete, calling the Verifier.Verified method will indicate
// whether or not the stream of bytes matches the target digest.
//
// # Missing Features
// Missing Features
//
// In addition to the above, we intend to add the following features to this
// package:
@@ -58,4 +58,5 @@
// 1. A Digester type that supports write sink digest calculation.
//
// 2. Suspend and resume of ongoing digest calculations to support efficient digest verification in the registry.
//
package digest
+1
View File
@@ -20,3 +20,4 @@ type anyArgument struct{}
func (a anyArgument) Match(_ interface{}) bool {
return true
}
+4 -4
View File
@@ -11,7 +11,7 @@
// programmers to add context to the failure path in their code in a way
// that does not destroy the original value of the error.
//
// # Adding context to an error
// Adding context to an error
//
// The errors.Wrap function returns a new error that adds context to the
// original error by recording a stack trace at the point Wrap is called,
@@ -27,7 +27,7 @@
// operations: annotating an error with a stack trace and with a message,
// respectively.
//
// # Retrieving the cause of an error
// Retrieving the cause of an error
//
// Using errors.Wrap constructs a stack of errors, adding context to the
// preceding error. Depending on the nature of the error it may be necessary
@@ -52,7 +52,7 @@
// Although the causer interface is not exported by this package, it is
// considered a part of its stable public interface.
//
// # Formatted printing of errors
// Formatted printing of errors
//
// All error values returned from this package implement fmt.Formatter and can
// be formatted by the fmt package. The following verbs are supported:
@@ -63,7 +63,7 @@
// %+v extended format. Each Frame of the error's StackTrace will
// be printed in detail.
//
// # Retrieving the stack trace of an error or wrapper
// Retrieving the stack trace of an error or wrapper
//
// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are
// invoked. This information can be retrieved with the following interface:
-1
View File
@@ -1,4 +1,3 @@
//go:build go1.13
// +build go1.13
package errors
-3
View File
@@ -199,12 +199,9 @@ func (m *SequenceMatcher) isBJunk(s string) bool {
// If IsJunk is not defined:
//
// Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where
//
// alo <= i <= i+k <= ahi
// blo <= j <= j+k <= bhi
//
// and for all (i',j',k') meeting those conditions,
//
// k >= k'
// i <= i'
// and if i == i', j <= j'
+1 -1
View File
@@ -1,6 +1,7 @@
/*
Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
The simplest way to use Logrus is simply the package-level exported logger:
package main
@@ -18,7 +19,6 @@ The simplest way to use Logrus is simply the package-level exported logger:
}
Output:
time="2015-09-07T08:48:33Z" level=info msg="A walrus appears" animal=walrus number=1 size=10
For a full guide visit https://github.com/sirupsen/logrus
+3 -3
View File
@@ -347,9 +347,9 @@ func (logger *Logger) Exit(code int) {
logger.ExitFunc(code)
}
// When file is opened with appending mode, it's safe to
// write concurrently to a file (within 4k message on Linux).
// In these cases user can choose to disable the lock.
//When file is opened with appending mode, it's safe to
//write concurrently to a file (within 4k message on Linux).
//In these cases user can choose to disable the lock.
func (logger *Logger) SetNoLock() {
logger.mu.Disable()
}
-1
View File
@@ -1,4 +1,3 @@
//go:build appengine
// +build appengine
package logrus
-1
View File
@@ -1,4 +1,3 @@
//go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && !js
// +build darwin dragonfly freebsd netbsd openbsd
// +build !js
-1
View File
@@ -1,4 +1,3 @@
//go:build js
// +build js
package logrus

Some files were not shown because too many files have changed in this diff Show More