Working with a boilerplate
This commit is contained in:
parent
910bd99b47
commit
814f3bca15
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,4 @@
|
|||||||
src/stub
|
src/stub
|
||||||
src/internal/storage/persistence
|
src/internal/storage/persistence
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
|||||||
6
go.mod
6
go.mod
@ -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
20
go.sum
@ -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=
|
||||||
|
|||||||
7
makefile
7
makefile
@ -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:
|
||||||
|
|||||||
25
sqlc.yaml
25
sqlc.yaml
@ -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")
|
||||||
|
|||||||
0
src/db/migration/000001_init.down.sql
Normal file
0
src/db/migration/000001_init.down.sql
Normal file
34
src/db/migration/000001_init.up.sql
Normal file
34
src/db/migration/000001_init.up.sql
Normal 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;
|
||||||
3
src/internal/const/query/q.sql
Normal file
3
src/internal/const/query/q.sql
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
--- name: GetUser :one
|
||||||
|
SELECT * FROM user
|
||||||
|
WHERE id = $1 LIMIT 1;
|
||||||
Loading…
x
Reference in New Issue
Block a user