Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
E
ems-esp-logger
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jonas Leder
ems-esp-logger
Commits
06285f76
Commit
06285f76
authored
2 months ago
by
Jonas Leder
Browse files
Options
Downloads
Patches
Plain Diff
initialize database connection with sqlite or MySQL
parent
1fe5f8d2
Branches
Branches containing commit
No related tags found
1 merge request
!1
WIP: write values to a database
Pipeline
#54563
failed
2 months ago
Stage: build
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
database/main.go
+88
-0
88 additions, 0 deletions
database/main.go
database/tables/instance.go
+7
-0
7 additions, 0 deletions
database/tables/instance.go
go.mod
+18
-0
18 additions, 0 deletions
go.mod
go.sum
+42
-0
42 additions, 0 deletions
go.sum
main.go
+8
-1
8 additions, 1 deletion
main.go
with
163 additions
and
1 deletion
database/main.go
0 → 100644
+
88
−
0
View file @
06285f76
package
database
import
(
"fmt"
"os"
"time"
"github.com/glebarez/sqlite"
gormloggerlogrus
"github.com/nekomeowww/gorm-logger-logrus"
"github.com/sirupsen/logrus"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"jonasled.dev/jonasled/ems-esp-logger/database/tables"
"jonasled.dev/jonasled/ems-esp-logger/log"
)
var
Db
*
gorm
.
DB
func
Init
()
{
var
err
error
var
dbdriver
gorm
.
Dialector
switch
os
.
Getenv
(
"OUTPUT_DATABASE_TYPE"
)
{
case
"sqlite"
:
dbdriver
=
sqlite
.
Open
(
os
.
Getenv
(
"OUTPUT_DATABSE"
))
case
"mysql"
:
dsn
:=
fmt
.
Sprintf
(
"%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local"
,
os
.
Getenv
(
"OUTPUT_DATABASE_USER"
),
os
.
Getenv
(
"OUTPUT_DATABASE_PASSWORD"
),
os
.
Getenv
(
"OUTPUT_DATABASE_HOST"
),
os
.
Getenv
(
"OUTPUT_DATABSE"
),
)
dbdriver
=
mysql
.
Open
(
dsn
)
default
:
log
.
Log
.
Fatal
(
"Please set OUTPUT_DATABASE_TYPE to a valid value"
)
}
Db
,
err
=
gorm
.
Open
(
dbdriver
,
&
gorm
.
Config
{
Logger
:
gormloggerlogrus
.
New
(
gormloggerlogrus
.
Options
{
Logger
:
logrus
.
NewEntry
(
log
.
Log
),
LogLevel
:
logger
.
Error
,
IgnoreRecordNotFoundError
:
false
,
SlowThreshold
:
time
.
Millisecond
*
200
,
FileWithLineNumField
:
"file"
,
}),
})
if
err
!=
nil
{
log
.
Log
.
Fatal
(
"Failed initializing database: "
,
err
.
Error
())
}
if
os
.
Getenv
(
"OUTPUT_DATABASE_EXECUTE_MIGRATIONS"
)
!=
"false"
{
log
.
Log
.
Info
(
"Executing database migrations"
)
Db
.
AutoMigrate
(
&
tables
.
Instance
{})
}
}
func
CreateInstance
()
{
instanceName
:=
os
.
Getenv
(
"INSTANCE_NAME"
)
instanceDescription
:=
os
.
Getenv
(
"INSTANCE_DESCRIPTION"
)
if
instanceName
==
""
||
instanceDescription
==
""
{
log
.
Log
.
Fatal
(
"INSTANCE_NAME and INSTANCE_DESCRIPTION must be set"
)
}
var
instance
tables
.
Instance
err
:=
Db
.
Where
(
"name = ?"
,
instanceName
)
.
First
(
&
instance
)
.
Error
if
err
!=
nil
{
if
err
==
gorm
.
ErrRecordNotFound
{
// Create a new instance if it doesn't exist
instance
=
tables
.
Instance
{
Name
:
instanceName
,
Description
:
instanceDescription
,
}
if
err
:=
Db
.
Create
(
&
instance
)
.
Error
;
err
!=
nil
{
log
.
Log
.
Fatalf
(
"Failed to create instance: %v"
,
err
)
}
log
.
Log
.
Infof
(
"Created new instance: %+v
\n
"
,
instance
)
}
else
{
log
.
Log
.
Fatalf
(
"Failed to query database: %v"
,
err
)
}
}
else
{
// Update the description if the instance exists
instance
.
Description
=
instanceDescription
if
err
:=
Db
.
Save
(
&
instance
)
.
Error
;
err
!=
nil
{
log
.
Log
.
Fatalf
(
"Failed to update instance description: %v"
,
err
)
}
log
.
Log
.
Infof
(
"Updated instance description: %+v
\n
"
,
instance
)
}
}
This diff is collapsed.
Click to expand it.
database/tables/instance.go
0 → 100644
+
7
−
0
View file @
06285f76
package
tables
type
Instance
struct
{
ID
uint
`gorm:"primaryKey"`
Name
string
Description
string
}
This diff is collapsed.
Click to expand it.
go.mod
+
18
−
0
View file @
06285f76
...
...
@@ -4,18 +4,36 @@ go 1.23.4
require (
github.com/eclipse/paho.mqtt.golang
v1.5.0
github.com/glebarez/sqlite
v1.11.0
github.com/joho/godotenv
v1.5.1
github.com/nekomeowww/gorm-logger-logrus
v1.0.8
github.com/pebbe/zmq4
v1.2.11
github.com/sirupsen/logrus
v1.9.3
github.com/wind-c/comqtt/v2
v2.6.0
gopkg.in/natefinch/lumberjack.v2
v2.2.1
gorm.io/driver/mysql
v1.5.7
gorm.io/gorm
v1.25.12
)
require (
filippo.io/edwards25519
v1.1.0 // indirect
github.com/dustin/go-humanize
v1.0.1 // indirect
github.com/glebarez/go-sqlite
v1.21.2 // indirect
github.com/go-sql-driver/mysql
v1.8.1 // indirect
github.com/google/uuid
v1.3.0 // indirect
github.com/gorilla/websocket
v1.5.3 // indirect
github.com/jinzhu/inflection
v1.0.0 // indirect
github.com/jinzhu/now
v1.1.5 // indirect
github.com/mattn/go-isatty
v0.0.20 // indirect
github.com/remyoudompheng/bigfft
v0.0.0-20230129092748-24d4a6f8daec // indirect
github.com/rs/xid
v1.5.0 // indirect
golang.org/x/net
v0.27.0 // indirect
golang.org/x/sync
v0.7.0 // indirect
golang.org/x/sys
v0.22.0 // indirect
golang.org/x/text
v0.16.0 // indirect
gopkg.in/yaml.v3
v3.0.1 // indirect
modernc.org/libc
v1.22.5 // indirect
modernc.org/mathutil
v1.5.0 // indirect
modernc.org/memory
v1.5.0 // indirect
modernc.org/sqlite
v1.23.1 // indirect
)
This diff is collapsed.
Click to expand it.
go.sum
+
42
−
0
View file @
06285f76
filippo.io/edwards25519
v1.1.0 h1:
FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519
v1.1.0/go.mod h1:
BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
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/go.mod h1:
J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize
v1.0.1 h1:
GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize
v1.0.1/go.mod h1:
Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/eclipse/paho.mqtt.golang
v1.5.0 h1:
EH+bUVJNgttidWFkLLVKaQPGmkTUfQQqjOsyvMGvD6o=
github.com/eclipse/paho.mqtt.golang
v1.5.0/go.mod h1:
du/2qNQVqJf/Sqs4MEL77kR8QTqANF7XU7Fk0aOTAgk=
github.com/glebarez/go-sqlite
v1.21.2 h1:
3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo=
github.com/glebarez/go-sqlite
v1.21.2/go.mod h1:
sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k=
github.com/glebarez/sqlite
v1.11.0 h1:
wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw=
github.com/glebarez/sqlite
v1.11.0/go.mod h1:
h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ=
github.com/go-sql-driver/mysql
v1.7.0/go.mod h1:
OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-sql-driver/mysql
v1.8.1 h1:
LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
github.com/go-sql-driver/mysql
v1.8.1/go.mod h1:
wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/google/pprof
v0.0.0-20221118152302-e6195bd50e26 h1:
Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
github.com/google/pprof
v0.0.0-20221118152302-e6195bd50e26/go.mod h1:
dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
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/gorilla/websocket
v1.5.3 h1:
saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket
v1.5.3/go.mod h1:
YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/jinzhu/copier
v0.4.0 h1:
w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
github.com/jinzhu/copier
v0.4.0/go.mod h1:
DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
github.com/jinzhu/inflection
v1.0.0 h1:
K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
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/joho/godotenv
v1.5.1 h1:
7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv
v1.5.1/go.mod h1:
f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
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/nekomeowww/gorm-logger-logrus
v1.0.8 h1:
/XdgNrSBSrTwiZ7fgf8Y9zW9juW1rVmRoY7OkX/tPnY=
github.com/nekomeowww/gorm-logger-logrus
v1.0.8/go.mod h1:
V266BSFFzJF1jnKWVAucFsh4U+ib3pEqJCzQY5zm7iA=
github.com/pebbe/zmq4
v1.2.11 h1:
Ua5mgIaZeabUGnH7tqswkUcjkL7JYGai5e8v4hpEU9Q=
github.com/pebbe/zmq4
v1.2.11/go.mod h1:
nqnPueOapVhE2wItZ0uOErngczsJdLOGkebMxaO8r48=
github.com/pmezard/go-difflib
v1.0.0 h1:
4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib
v1.0.0/go.mod h1:
iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/remyoudompheng/bigfft
v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:
qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/remyoudompheng/bigfft
v0.0.0-20230129092748-24d4a6f8daec h1:
W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft
v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:
qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/rs/xid
v1.5.0 h1:
mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
github.com/rs/xid
v1.5.0/go.mod h1:
trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/sirupsen/logrus
v1.9.3 h1:
dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
...
...
@@ -28,8 +54,11 @@ golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
golang.org/x/sync
v0.7.0 h1:
YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
golang.org/x/sync
v0.7.0/go.mod h1:
Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys
v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:
oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys
v0.6.0/go.mod h1:
oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys
v0.22.0 h1:
RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
golang.org/x/sys
v0.22.0/go.mod h1:
/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text
v0.16.0 h1:
a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
golang.org/x/text
v0.16.0/go.mod h1:
GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
gopkg.in/check.v1
v0.0.0-20161208181325-20d25e280405 h1:
yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1
v0.0.0-20161208181325-20d25e280405/go.mod h1:
Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/natefinch/lumberjack.v2
v2.2.1 h1:
bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
...
...
@@ -37,3 +66,16 @@ gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYs
gopkg.in/yaml.v3
v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:
K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3
v3.0.1 h1:
fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3
v3.0.1/go.mod h1:
K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/mysql
v1.5.7 h1:
MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
gorm.io/driver/mysql
v1.5.7/go.mod h1:
sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
gorm.io/gorm
v1.25.7/go.mod h1:
hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
gorm.io/gorm
v1.25.12 h1:
I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
gorm.io/gorm
v1.25.12/go.mod h1:
xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
modernc.org/libc
v1.22.5 h1:
91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE=
modernc.org/libc
v1.22.5/go.mod h1:
jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY=
modernc.org/mathutil
v1.5.0 h1:
rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ=
modernc.org/mathutil
v1.5.0/go.mod h1:
mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
modernc.org/memory
v1.5.0 h1:
N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds=
modernc.org/memory
v1.5.0/go.mod h1:
PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
modernc.org/sqlite
v1.23.1 h1:
nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM=
modernc.org/sqlite
v1.23.1/go.mod h1:
OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk=
This diff is collapsed.
Click to expand it.
main.go
+
8
−
1
View file @
06285f76
...
...
@@ -5,6 +5,7 @@ import (
"time"
_
"github.com/joho/godotenv/autoload"
"jonasled.dev/jonasled/ems-esp-logger/database"
"jonasled.dev/jonasled/ems-esp-logger/log"
"jonasled.dev/jonasled/ems-esp-logger/messageworker"
"jonasled.dev/jonasled/ems-esp-logger/mqttclient"
...
...
@@ -14,9 +15,15 @@ import (
func
main
()
{
log
.
Init
()
defer
zeromq
.
Pusher
.
Close
()
zeromq
.
Init
()
defer
zeromq
.
Pusher
.
Close
()
if
os
.
Getenv
(
"OUTPUT_DATABSE"
)
!=
""
{
database
.
Init
()
database
.
CreateInstance
()
}
if
os
.
Getenv
(
"MQTT_SERVER_ENABLED"
)
==
"true"
{
log
.
Log
.
Info
(
"Starting embedded MQTT server"
)
mqttserver
.
Start
()
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment