added scylladb and request for users
parent
cafbebd9de
commit
e00cb6649b
|
@ -2,3 +2,9 @@ DEBUG=false
|
||||||
HOST=127.0.0.1
|
HOST=127.0.0.1
|
||||||
PORT=8080
|
PORT=8080
|
||||||
MANAGEMENTSYSTEM_API_KEY=test
|
MANAGEMENTSYSTEM_API_KEY=test
|
||||||
|
|
||||||
|
# ScyllaDB
|
||||||
|
SCYLLADB_HOST=127.0.0.1
|
||||||
|
SCYLLADB_USERNAME=user
|
||||||
|
SCYLLADB_PASSWORD=password
|
||||||
|
SCYLLADB_KEYSPACE=keyspace
|
6
go.mod
6
go.mod
|
@ -10,7 +10,10 @@ require (
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/andybalholm/brotli v1.0.4 // indirect
|
github.com/andybalholm/brotli v1.0.4 // indirect
|
||||||
|
github.com/gocql/gocql v0.0.0-20211015133455-b225f9b53fa1 // indirect
|
||||||
|
github.com/golang/snappy v0.0.4 // indirect
|
||||||
github.com/google/uuid v1.3.0 // indirect
|
github.com/google/uuid v1.3.0 // indirect
|
||||||
|
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed // indirect
|
||||||
github.com/klauspost/compress v1.15.15 // indirect
|
github.com/klauspost/compress v1.15.15 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.17 // indirect
|
github.com/mattn/go-isatty v0.0.17 // indirect
|
||||||
|
@ -19,9 +22,12 @@ require (
|
||||||
github.com/rivo/uniseg v0.4.3 // indirect
|
github.com/rivo/uniseg v0.4.3 // indirect
|
||||||
github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94 // indirect
|
github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94 // indirect
|
||||||
github.com/savsgio/gotils v0.0.0-20230203094617-bcbc01813b4f // indirect
|
github.com/savsgio/gotils v0.0.0-20230203094617-bcbc01813b4f // indirect
|
||||||
|
github.com/scylladb/go-reflectx v1.0.1 // indirect
|
||||||
|
github.com/scylladb/gocqlx/v2 v2.8.0 // indirect
|
||||||
github.com/tinylib/msgp v1.1.8 // indirect
|
github.com/tinylib/msgp v1.1.8 // indirect
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasthttp v1.44.0 // indirect
|
github.com/valyala/fasthttp v1.44.0 // indirect
|
||||||
github.com/valyala/tcplisten v1.0.0 // indirect
|
github.com/valyala/tcplisten v1.0.0 // indirect
|
||||||
golang.org/x/sys v0.4.0 // indirect
|
golang.org/x/sys v0.4.0 // indirect
|
||||||
|
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||||
)
|
)
|
||||||
|
|
19
go.sum
19
go.sum
|
@ -1,18 +1,30 @@
|
||||||
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
|
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
|
||||||
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
||||||
|
github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k=
|
||||||
|
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gocql/gocql v0.0.0-20211015133455-b225f9b53fa1 h1:px9qUCy/RNJNsfCam4m2IxWGxNuimkrioEF0vrrbPsg=
|
||||||
|
github.com/gocql/gocql v0.0.0-20211015133455-b225f9b53fa1/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8=
|
||||||
github.com/gofiber/fiber/v2 v2.42.0 h1:Fnp7ybWvS+sjNQsFvkhf4G8OhXswvB6Vee8hM/LyS+8=
|
github.com/gofiber/fiber/v2 v2.42.0 h1:Fnp7ybWvS+sjNQsFvkhf4G8OhXswvB6Vee8hM/LyS+8=
|
||||||
github.com/gofiber/fiber/v2 v2.42.0/go.mod h1:3+SGNjqMh5VQH5Vz2Wdi43zTIV16ktlFd3x3R6O1Zlc=
|
github.com/gofiber/fiber/v2 v2.42.0/go.mod h1:3+SGNjqMh5VQH5Vz2Wdi43zTIV16ktlFd3x3R6O1Zlc=
|
||||||
|
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
|
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
||||||
|
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8=
|
||||||
|
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4=
|
||||||
github.com/joho/godotenv v1.5.0 h1:C/Vohk/9L1RCoS/UW2gfyi2N0EElSW3yb9zwi3PjosE=
|
github.com/joho/godotenv v1.5.0 h1:C/Vohk/9L1RCoS/UW2gfyi2N0EElSW3yb9zwi3PjosE=
|
||||||
github.com/joho/godotenv v1.5.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
github.com/joho/godotenv v1.5.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||||
github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
|
github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
|
||||||
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
|
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
|
||||||
github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw=
|
github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw=
|
||||||
github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4=
|
github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4=
|
||||||
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
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-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.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
|
@ -36,9 +48,14 @@ github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d h1:Q+gqLBOPkFGHyCJx
|
||||||
github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d/go.mod h1:Gy+0tqhJvgGlqnTF8CVGP0AaGRjwBtXs/a5PA0Y3+A4=
|
github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d/go.mod h1:Gy+0tqhJvgGlqnTF8CVGP0AaGRjwBtXs/a5PA0Y3+A4=
|
||||||
github.com/savsgio/gotils v0.0.0-20230203094617-bcbc01813b4f h1:LKLq2MuL/uCGWS7BGo7yOeE/sj5wKxy2aQs69D8imsc=
|
github.com/savsgio/gotils v0.0.0-20230203094617-bcbc01813b4f h1:LKLq2MuL/uCGWS7BGo7yOeE/sj5wKxy2aQs69D8imsc=
|
||||||
github.com/savsgio/gotils v0.0.0-20230203094617-bcbc01813b4f/go.mod h1:qwtSXrKuJh/zsFQ12yEE89xfCrGKK63Rr7ctU/uCo4g=
|
github.com/savsgio/gotils v0.0.0-20230203094617-bcbc01813b4f/go.mod h1:qwtSXrKuJh/zsFQ12yEE89xfCrGKK63Rr7ctU/uCo4g=
|
||||||
|
github.com/scylladb/go-reflectx v1.0.1 h1:b917wZM7189pZdlND9PbIJ6NQxfDPfBvUaQ7cjj1iZQ=
|
||||||
|
github.com/scylladb/go-reflectx v1.0.1/go.mod h1:rWnOfDIRWBGN0miMLIcoPt/Dhi2doCMZqwMCJ3KupFc=
|
||||||
|
github.com/scylladb/gocqlx/v2 v2.8.0 h1:f/oIgoEPjKDKd+RIoeHqexsIQVIbalVmT+axwvUqQUg=
|
||||||
|
github.com/scylladb/gocqlx/v2 v2.8.0/go.mod h1:4/+cga34PVqjhgSoo5Nr2fX1MQIqZB5eCE5DK4xeDig=
|
||||||
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
|
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
|
||||||
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
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 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/tinylib/msgp v1.1.6 h1:i+SbKraHhnrf9M5MYmvQhFnbLhAXSDWF8WWsuyRdocw=
|
github.com/tinylib/msgp v1.1.6 h1:i+SbKraHhnrf9M5MYmvQhFnbLhAXSDWF8WWsuyRdocw=
|
||||||
|
@ -105,5 +122,7 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
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=
|
||||||
|
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
||||||
|
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|
36
main.go
36
main.go
|
@ -16,6 +16,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"clickandjoin.app/managementsystem/modules/config"
|
"clickandjoin.app/managementsystem/modules/config"
|
||||||
|
"clickandjoin.app/managementsystem/modules/scylladb"
|
||||||
"clickandjoin.app/managementsystem/routers/router"
|
"clickandjoin.app/managementsystem/routers/router"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"github.com/gofiber/fiber/v2/middleware/logger"
|
"github.com/gofiber/fiber/v2/middleware/logger"
|
||||||
|
@ -30,6 +31,8 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
logrus.Println("Debug:", config.Cfg.Debug)
|
logrus.Println("Debug:", config.Cfg.Debug)
|
||||||
|
|
||||||
|
scylladb.InitDatabase()
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -43,40 +46,7 @@ func main() {
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
cache.WebSocketSessions["test"] = []string{"alpha", "test", "testa", "bob", "beta"}
|
|
||||||
|
|
||||||
logrus.Println(len(cache.WebSocketSessions["test"]))
|
|
||||||
|
|
||||||
user := cache.WebSocketSessions["test"]
|
|
||||||
|
|
||||||
for index, item := range user {
|
|
||||||
if item == "alpha" {
|
|
||||||
user = remove(user, index)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
logrus.Println("s", cache.WebSocketSessions, len(user)) */
|
|
||||||
/*
|
|
||||||
t1 := time.NewTicker(3 * time.Second)
|
|
||||||
|
|
||||||
i := 0
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
for range t1.C {
|
|
||||||
i++
|
|
||||||
logrus.Println("timer", cache.WebSocketSessions)
|
|
||||||
}
|
|
||||||
}() */
|
|
||||||
|
|
||||||
router.SetupRoutes(app)
|
router.SetupRoutes(app)
|
||||||
|
|
||||||
app.Listen(cfg.Host + ":" + cfg.Port)
|
app.Listen(cfg.Host + ":" + cfg.Port)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
func remove(s []string, i int) []string {
|
|
||||||
s[i] = s[0]
|
|
||||||
return s[1:]
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
|
@ -15,6 +15,14 @@ type Config struct {
|
||||||
Host string
|
Host string
|
||||||
Port string
|
Port string
|
||||||
ManagementSystemApiKey string
|
ManagementSystemApiKey string
|
||||||
|
ScyllaDB ScyllaDB
|
||||||
|
}
|
||||||
|
|
||||||
|
type ScyllaDB struct {
|
||||||
|
Host string
|
||||||
|
Username string
|
||||||
|
Password string
|
||||||
|
Keyspace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadConfig() {
|
func LoadConfig() {
|
||||||
|
@ -38,6 +46,12 @@ func LoadConfig() {
|
||||||
Host: os.Getenv("HOST"),
|
Host: os.Getenv("HOST"),
|
||||||
Port: os.Getenv("PORT"),
|
Port: os.Getenv("PORT"),
|
||||||
ManagementSystemApiKey: os.Getenv("MANAGEMENTSYSTEM_API_KEY"),
|
ManagementSystemApiKey: os.Getenv("MANAGEMENTSYSTEM_API_KEY"),
|
||||||
|
ScyllaDB: ScyllaDB{
|
||||||
|
Host: os.Getenv("SCYLLADB_HOST"),
|
||||||
|
Username: os.Getenv("SCYLLADB_USERNAME"),
|
||||||
|
Password: os.Getenv("SCYLLADB_PASSWORD"),
|
||||||
|
Keyspace: os.Getenv("SCYLLADB_KEYSPACE"),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
Cfg = cfg
|
Cfg = cfg
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
package scylladb
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/scylladb/gocqlx/v2/table"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
Users = table.New(table.Metadata{
|
||||||
|
Name: "users",
|
||||||
|
Columns: []string{
|
||||||
|
"id",
|
||||||
|
"username",
|
||||||
|
"account_name",
|
||||||
|
"account_name_lc",
|
||||||
|
"email",
|
||||||
|
"password",
|
||||||
|
"description",
|
||||||
|
"latitude",
|
||||||
|
"longitude",
|
||||||
|
"xp_level",
|
||||||
|
"xp_points",
|
||||||
|
"followers_count",
|
||||||
|
"following_count",
|
||||||
|
"account_status",
|
||||||
|
"avatar_url",
|
||||||
|
"public_keys",
|
||||||
|
"created_at",
|
||||||
|
"updated_at"},
|
||||||
|
PartKey: []string{"id"},
|
||||||
|
})
|
||||||
|
)
|
|
@ -0,0 +1,32 @@
|
||||||
|
package scylladb
|
||||||
|
|
||||||
|
import (
|
||||||
|
"clickandjoin.app/managementsystem/modules/config"
|
||||||
|
"github.com/gocql/gocql"
|
||||||
|
"github.com/scylladb/gocqlx/v2"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
|
)
|
||||||
|
|
||||||
|
var Session gocqlx.Session
|
||||||
|
var Cluster *gocql.ClusterConfig
|
||||||
|
|
||||||
|
func InitDatabase() {
|
||||||
|
Cluster = gocql.NewCluster(config.Cfg.ScyllaDB.Host)
|
||||||
|
|
||||||
|
Cluster.Authenticator = gocql.PasswordAuthenticator{
|
||||||
|
Username: config.Cfg.ScyllaDB.Username,
|
||||||
|
Password: config.Cfg.ScyllaDB.Password,
|
||||||
|
}
|
||||||
|
|
||||||
|
Cluster.Keyspace = config.Cfg.ScyllaDB.Keyspace
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
Session, err = gocqlx.WrapSession(Cluster.CreateSession())
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
logrus.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
logrus.Info("Database connected")
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package structs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/gocql/gocql"
|
||||||
|
"github.com/scylladb/gocqlx/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
type User struct {
|
||||||
|
Id string
|
||||||
|
Username string
|
||||||
|
AccountName string
|
||||||
|
AccountNameLc string
|
||||||
|
Email string
|
||||||
|
Password string
|
||||||
|
Description string
|
||||||
|
Latitude float64
|
||||||
|
Longitude float64
|
||||||
|
XpLevel int
|
||||||
|
XpPoints int
|
||||||
|
FollowersCount int
|
||||||
|
FollowingCount int
|
||||||
|
AccountStatus uint8
|
||||||
|
AvatarUrl string
|
||||||
|
PublicKeys []UserPublicKeys
|
||||||
|
CreatedAt int64
|
||||||
|
UpdatedAt int64
|
||||||
|
}
|
||||||
|
|
||||||
|
type UserPublicKeys struct {
|
||||||
|
gocqlx.UDT
|
||||||
|
Id string
|
||||||
|
PublicKey string
|
||||||
|
}
|
||||||
|
|
||||||
|
// needed to store into database
|
||||||
|
func (u UserPublicKeys) MarshalUDT(name string, info gocql.TypeInfo) ([]byte, error) {
|
||||||
|
f := gocqlx.DefaultMapper.FieldByName(reflect.ValueOf(u), name)
|
||||||
|
return gocql.Marshal(info, f.Interface())
|
||||||
|
}
|
||||||
|
|
||||||
|
// needed to take from database
|
||||||
|
func (u *UserPublicKeys) UnmarshalUDT(name string, info gocql.TypeInfo, data []byte) error {
|
||||||
|
f := gocqlx.DefaultMapper.FieldByName(reflect.ValueOf(u), name)
|
||||||
|
return gocql.Unmarshal(info, data, f.Addr().Interface())
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:model UsersResponse
|
||||||
|
type UsersResponse struct {
|
||||||
|
Users []User
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package users
|
||||||
|
|
||||||
|
import (
|
||||||
|
"clickandjoin.app/managementsystem/modules/scylladb"
|
||||||
|
"clickandjoin.app/managementsystem/modules/structs"
|
||||||
|
"github.com/gofiber/fiber/v2"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetAllUsers(c *fiber.Ctx) error {
|
||||||
|
// swagger:operation GET /users users usersGetAllUsers
|
||||||
|
// ---
|
||||||
|
// summary: List of users
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// responses:
|
||||||
|
// '200':
|
||||||
|
// description: List of users
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/FoundAccountNamesResponse"
|
||||||
|
// '400':
|
||||||
|
// description: Invalid account name format
|
||||||
|
// '500':
|
||||||
|
// description: Internal server error
|
||||||
|
|
||||||
|
var users []structs.User
|
||||||
|
|
||||||
|
q := scylladb.Session.Query(scylladb.Users.SelectAll())
|
||||||
|
|
||||||
|
if err := q.SelectRelease(&users); err != nil {
|
||||||
|
logrus.Errorln("Failed to get users, err:", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var nUsers []structs.User
|
||||||
|
|
||||||
|
if len(users) > 0 { // remove password value from result
|
||||||
|
for _, user := range users {
|
||||||
|
user.Password = ""
|
||||||
|
nUsers = append(nUsers, user)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.JSON(structs.UsersResponse{Users: nUsers})
|
||||||
|
}
|
|
@ -2,11 +2,15 @@ package router
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"clickandjoin.app/managementsystem/modules/config"
|
"clickandjoin.app/managementsystem/modules/config"
|
||||||
|
"clickandjoin.app/managementsystem/routers/api/v1/users"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
func SetupRoutes(app *fiber.App) {
|
func SetupRoutes(app *fiber.App) {
|
||||||
//v1 := app.Group("/v1")
|
v1 := app.Group("/v1")
|
||||||
|
|
||||||
|
us := v1.Group("/users")
|
||||||
|
us.Get("/", ApiKeyValidation, users.GetAllUsers)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ApiKeyValidation(c *fiber.Ctx) error {
|
func ApiKeyValidation(c *fiber.Ctx) error {
|
||||||
|
|
Loading…
Reference in New Issue