diff --git a/srv/cmd/gatekeeper/main.go b/srv/cmd/gatekeeper/main.go new file mode 100644 index 0000000..a68c39e --- /dev/null +++ b/srv/cmd/gatekeeper/main.go @@ -0,0 +1,29 @@ +package main + +import ( + "fmt" + "net/http" + + "github.com/labstack/echo" + + "Crimson-Gatekeeper/internal/common" +) + +func main() { + client := common.GetDataBaseClient() + + config, ero := client.DB() + if ero != nil { + fmt.Println("获取连接池失败") + panic(ero) + } + + defer config.Close() + app := echo.New() + app.GET("/", func(ctx echo.Context) error { + return ctx.String(http.StatusOK, "Hello, World!") + }) + app.Logger.Fatal(app.Start(":8443")) + + defer app.Close() +} diff --git a/srv/go.mod b/srv/go.mod index d927463..b4b203f 100644 --- a/srv/go.mod +++ b/srv/go.mod @@ -14,7 +14,15 @@ require ( github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect + github.com/labstack/echo v3.3.10+incompatible // indirect + github.com/labstack/gommon v0.4.2 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasttemplate v1.2.2 // indirect golang.org/x/crypto v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.33.0 // indirect ) diff --git a/srv/go.sum b/srv/go.sum index ea76b3f..e11e2df 100644 --- a/srv/go.sum +++ b/srv/go.sum @@ -13,18 +13,37 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/labstack/echo v3.3.10+incompatible h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg= +github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= +github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= +github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= +github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= diff --git a/srv/internal/common/database-client.go b/srv/internal/common/database-client.go new file mode 100644 index 0000000..dc4190f --- /dev/null +++ b/srv/internal/common/database-client.go @@ -0,0 +1,21 @@ +package common + +import ( + "gorm.io/driver/postgres" + "gorm.io/gorm" +) + +func GetDataBaseClient() *gorm.DB { + dsn := "host=localhost " + + "user=gatekeeper " + + "dbname=crimson " + + "sslmode=disable " + + "port=5432 " + + "password=crimson " + + "connect_timeout=20 " + client, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) + if err != nil { + panic("无法连接数据库") + } + return client +} diff --git a/srv/internal/user/controller.go b/srv/internal/user/controller.go new file mode 100644 index 0000000..b794b4c --- /dev/null +++ b/srv/internal/user/controller.go @@ -0,0 +1,17 @@ +package user + +import ( + "net/http" + + "github.com/labstack/echo" +) + +type Controller struct{} + +func (Controller) GetLogin(ctx echo.Context) error { + return ctx.String(http.StatusOK, "success") +} + +func New() *Controller { + return &Controller{} +} diff --git a/srv/main.go b/srv/main.go index 4b45525..b393b32 100644 --- a/srv/main.go +++ b/srv/main.go @@ -10,28 +10,34 @@ import ( ) type User struct { - id int8 - createTime time.Time - lastUpdateTime time.Time - name string - account string - passwd string + Id int8 + CreateTime time.Time + LastUpdateTime time.Time + Name string + Account string + Passwd string } func main() { + fmt.Println("程序启动!") dsn := "host=localhost " + "user=gatekeeper " + "dbname=crimson " + "sslmode=disable " + "port=5432 " + - "password=crimson " + "password=crimson " + + "connect_timeout=20 " db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) if err != nil { panic("无法连接数据库") } + fmt.Println("数据库连线完成") ctx := context.Background() usr, err := gorm.G[User](db).First(ctx) + if err != nil { + panic(err) + } fmt.Println(usr) fmt.Println("程序结束") } diff --git a/srv/sql/init.sql b/srv/sql/init.sql index 54c42f2..ba14c76 100644 --- a/srv/sql/init.sql +++ b/srv/sql/init.sql @@ -1,4 +1,4 @@ -CREATE TABLE public.user ( +CREATE TABLE public.users ( id bigint PRIMARY KEY , create_time timestamp NOT NULL , last_update_time timestamp NOT NULL, @@ -7,13 +7,13 @@ CREATE TABLE public.user ( passwd text NOT NULL ); -COMMENT ON TABLE public.user IS '基础用户表,记录用户在系统内的昵称'; -COMMENT ON COLUMN public.user.id IS '用户ID'; -COMMENT ON COLUMN public.user.name IS '用户在系统内的名称'; -COMMENT ON COLUMN public.user.account IS '用户登录凭证'; -COMMENT ON COLUMN public.user.passwd IS '用户登录密钥'; +COMMENT ON TABLE public.users IS '基础用户表,记录用户在系统内的昵称'; +COMMENT ON COLUMN public.users.id IS '用户ID'; +COMMENT ON COLUMN public.users.name IS '用户在系统内的名称'; +COMMENT ON COLUMN public.users.account IS '用户登录凭证'; +COMMENT ON COLUMN public.users.passwd IS '用户登录密钥'; -INSERT INTO public.user VALUES (0, transaction_timestamp(), transaction_timestamp(), '绯红先知', 'admin', 'fh123456'); +INSERT INTO public.users VALUES (0, transaction_timestamp(), transaction_timestamp(), '绯红先知', 'admin', 'fh123456'); CREATE TABLE public.system ( id bigint PRIMARY KEY ,