Working with a boilerplate

This commit is contained in:
nfel 2024-12-01 23:06:51 +03:30
parent 910bd99b47
commit 814f3bca15
Signed by: nfel
GPG Key ID: DCC0BF3F92B0D45F
8 changed files with 84 additions and 13 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
src/stub src/stub
src/internal/storage/persistence src/internal/storage/persistence
.idea/
.vscode/

6
go.mod
View File

@ -6,12 +6,18 @@ require (
github.com/BurntSushi/toml v1.4.0 github.com/BurntSushi/toml v1.4.0
github.com/kavenegar/kavenegar-go v0.0.0-20240205151018-77039f51467d github.com/kavenegar/kavenegar-go v0.0.0-20240205151018-77039f51467d
github.com/spf13/cobra v1.8.1 github.com/spf13/cobra v1.8.1
google.golang.org/grpc v1.68.0
google.golang.org/protobuf v1.35.2 google.golang.org/protobuf v1.35.2
) )
require ( require (
github.com/go-jet/jet/v2 v2.12.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/pflag v1.0.5 // indirect
golang.org/x/net v0.29.0 // indirect
golang.org/x/sys v0.25.0 // indirect
golang.org/x/text v0.18.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
) )
replace github.com/kavenegar/kavenegar-go v0.0.0-20240205151018-77039f51467d => github.com/nfel/kavenegar-go v1.0.3 replace github.com/kavenegar/kavenegar-go v0.0.0-20240205151018-77039f51467d => github.com/nfel/kavenegar-go v1.0.3

20
go.sum
View File

@ -1,8 +1,12 @@
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/go-jet/jet/v2 v2.12.0 h1:z2JfvBAZgsfxlQz6NXBYdZTXc7ep3jhbszTLtETv1JE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/go-jet/jet/v2 v2.12.0/go.mod h1:ufQVRQeI1mbcO5R8uCEVcVf3Foej9kReBdwDx7YMWUM=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/nfel/kavenegar-go v1.0.3 h1:ux8YWhG0NmOa0dZpW8cL+qzKusoOewIiw5tufWececU= github.com/nfel/kavenegar-go v1.0.3 h1:ux8YWhG0NmOa0dZpW8cL+qzKusoOewIiw5tufWececU=
@ -12,8 +16,16 @@ github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0=
google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA=
google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

View File

@ -75,10 +75,9 @@ GOOS=linux
GOARCH=amd64 GOARCH=amd64
DOCKER_IMG= DOCKER_IMG=
DOCKER_REG= DOCKER_REG=
all: tidy build run all: clean build run
# Ignore clean:
tidy:
@echo -ne "Formating Code \r" @echo -ne "Formating Code \r"
@go fmt ./... @go fmt ./...
@rm $(OUT) @rm $(OUT)
@ -117,7 +116,7 @@ build-migrate:
@echo -ne "Running Migrate \r" @echo -ne "Running Migrate \r"
@migrate \ @migrate \
-path ./src/db/migration\ -path ./src/db/migration\
-database postgres://gitea:gitea@localhost:5432/test1?sslmode=disable\ -database postgres://gitea:gitea@localhost:5432/test3?sslmode=disable\
up up
build-sqlc: build-sqlc:

View File

@ -1,15 +1,17 @@
version: "2" version: "2"
servers: servers:
- engine: postgresql - engine: postgresql
uri: "postgresql://gitea:gitea@localhost:5432/test1?sslmode=disable" uri: ${PG_URL}
sql: sql:
- engine: postgresql - name: repo
engine: postgresql
schema: src/db/migration/ schema: src/db/migration/
queries: src/internal/const/query/ queries: src/internal/const/query/
gen: gen:
go: go:
package: persistence sql_package: "pgx/v5"
out: src/internal/storage/persistence/ package: db
out: src/internal/domain/db/
emit_db_tags: true emit_db_tags: true
emit_json_tags: true emit_json_tags: true
emit_prepared_queries: false emit_prepared_queries: false
@ -18,4 +20,17 @@ sql:
emit_empty_slices: true emit_empty_slices: true
# sql_package: "pgx/v5" # sql_package: "pgx/v5"
database: database:
uri: postgresql://gitea:gitea@localhost:5432/test1 managed: true
rules:
- sqlc/db-prepare
- no-pg
- no-delete
rules:
- name: no-pg
message: "invalid engine: postgresql"
rule: |
config.engine == "postgresql"
- name: no-delete
message: "don't use delete statements"
rule: |
query.sql.contains("DELETE")

View File

View File

@ -0,0 +1,34 @@
BEGIN;
CREATE OR REPLACE FUNCTION trigger_set_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
-- optional uint64 id = 1; // Record Id of Log stored in db
-- string content = 2;
-- string effective_user = 3;
-- optional LogSource source = 5;
-- Importance importance = 6;
-- Meta meta = 7;
CREATE TABLE if not EXISTS log
(
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
type VARCHAR(255) NOT NULL,
content VARCHAR(255) NOT NULL,
user_id BIGINT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TRIGGER set_timestamp
BEFORE UPDATE ON log
FOR EACH ROW
EXECUTE PROCEDURE trigger_set_timestamp();
COMMIT;

View File

@ -0,0 +1,3 @@
--- name: GetUser :one
SELECT * FROM user
WHERE id = $1 LIMIT 1;