Skip to content

Commit

Permalink
feat DEFAULT_MODE
Browse files Browse the repository at this point in the history
  • Loading branch information
a3510377 committed May 16, 2024
1 parent 591234d commit 7b8a752
Show file tree
Hide file tree
Showing 13 changed files with 212 additions and 4 deletions.
22 changes: 22 additions & 0 deletions server/discord/discord.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package discord

import "github.com/bwmarrin/discordgo"

type DiscordClient struct {
*discordgo.Session
}

func NewDiscordClient(token string) (*DiscordClient, error) {
client, err := discordgo.New(token)
if err != nil {
return nil, err
}

client.Identify.Intents = makeIntentFlags(
discordgo.IntentsGuildMembers,
discordgo.IntentsGuildMessages,
discordgo.IntentsMessageContent,
)

return &DiscordClient{client}, nil
}
26 changes: 26 additions & 0 deletions server/discord/event.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package discord

import "github.com/bwmarrin/discordgo"

func messageCreateEvent(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Author.ID == s.State.User.ID {
return
}
s.ChannelMessageSend(m.ChannelID, m.Content)
}

func archiveReleaseHandler(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.ChannelID != "" {
return
}

if reference := m.Reference(); reference != nil {
referenceMsg, err := s.ChannelMessage(reference.ChannelID, reference.MessageID)
if err == nil {
s.ChannelMessageDelete(referenceMsg.ChannelID, referenceMsg.ID)
return
}
}

// content := m.Content
}
11 changes: 11 additions & 0 deletions server/discord/intent.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package discord

import "github.com/bwmarrin/discordgo"

func makeIntentFlags(intents ...discordgo.Intent) discordgo.Intent {
var result discordgo.Intent
for _, intent := range intents {
result |= intent
}
return result
}
2 changes: 2 additions & 0 deletions server/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ go 1.22.0
toolchain go1.22.2

require (
github.com/bwmarrin/discordgo v0.28.1
github.com/deckarep/golang-set/v2 v2.6.0
github.com/gin-gonic/gin v1.9.1
github.com/golang-jwt/jwt/v5 v5.2.1
Expand All @@ -19,6 +20,7 @@ require (
github.com/bytedance/sonic/loader v0.1.1 // indirect
github.com/cloudwego/base64x v0.1.3 // indirect
github.com/cloudwego/iasm v0.2.0 // indirect
github.com/gorilla/websocket v1.4.2 // indirect
github.com/kr/text v0.2.0 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
Expand Down
10 changes: 10 additions & 0 deletions server/go.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
github.com/bwmarrin/discordgo v0.28.1 h1:gXsuo2GBO7NbR6uqmrrBDplPUx2T3nzu775q/Rd1aG4=
github.com/bwmarrin/discordgo v0.28.1/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
github.com/bytedance/sonic v1.11.5 h1:G00FYjjqll5iQ1PYXynbg/hyzqBqavH8Mo9/oTopd9k=
github.com/bytedance/sonic v1.11.5/go.mod h1:X2PC2giUdj/Cv2lliWFLk6c/DUQok5rViJSemeB0wDw=
github.com/bytedance/sonic/loader v0.1.0/go.mod h1:UmRT+IRTGKz/DAkzcEGzyVqQFJ7H9BqwBO3pm9H/+HY=
Expand Down Expand Up @@ -37,6 +39,8 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
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/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
Expand Down Expand Up @@ -86,20 +90,26 @@ github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZ
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
golang.org/x/arch v0.7.0 h1:pskyeJh/3AmoQ8CPE95vxHLqp1G1GfGNXTmcl9NEKTc=
golang.org/x/arch v0.7.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo=
golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
Expand Down
9 changes: 9 additions & 0 deletions server/hooks/hooks.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package hooks

import "server/config"

func New() *Service {
return &Service{
Cfg: *config.Get(),
}
}
7 changes: 7 additions & 0 deletions server/hooks/types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package hooks

import "server/config"

type Service struct {
Cfg config.Config
}
19 changes: 16 additions & 3 deletions server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import (
"runtime"
"server/api"
"server/config"
"server/mode"
"server/model"
"server/utils"
"strings"
"syscall"
Expand All @@ -24,12 +26,23 @@ import (

// GIT_COMMIT and GIT_BRANCH are set by the build script
var (
GIT_BRANCH string = "-"
GIT_COMMIT string = "0000000"
VERSION = "unknown"
GIT_COMMIT = "unknown"
BUILD_DATE = "unknown"
DEFAULT_MODE = mode.Dev
)

func main() {
fmt.Printf("Server Version: %s (%s)\n", GIT_BRANCH, GIT_COMMIT)
versionInfo := model.VersionInfo{
Commit: GIT_COMMIT,
Version: VERSION,
BuildDate: BUILD_DATE,
}

fmt.Printf("Server Version %s-%s@%s\n", versionInfo.Version, versionInfo.Commit, versionInfo.BuildDate)
mode.SetDefaultMode(DEFAULT_MODE)
mode.Set(os.Getenv("MODE"))
fmt.Println("Server Running Mode:", mode.Get())

CONFIG_PATH := os.Getenv("CONFIG_PATH")
if CONFIG_PATH == "" {
Expand Down
5 changes: 5 additions & 0 deletions server/mode/error.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package mode

import "errors"

var ErrInvalidMode = errors.New("invalid mode")
95 changes: 95 additions & 0 deletions server/mode/mode.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package mode

import (
"strings"

"github.com/gin-gonic/gin"
)

const (
// Dev is used for development
Dev = "dev"
// Prod is used for production
Prod = "prod"
// TestDev is used for testing
TestDev = "test_dev"
// Default mode
)

var (
defaultMode = Dev
mode = defaultMode
)

// parseMode parses the mode
func parseMode(s string) (string, error) {
switch s := strings.ToLower(s); s {
case Dev, Prod, TestDev:
return s, nil
case "development":
return Dev, nil
case "release":
return Prod, nil
case "test":
return TestDev, nil
case "test-dev":
return TestDev, nil
default:
return "", ErrInvalidMode
}
}

// Get returns the mode
func Get() string {
return mode
}

// Set sets the mode
func Set(newMode string) {
if parseMode, err := parseMode(newMode); err == nil {
mode = parseMode
} else {
mode = defaultMode
}

updateGinMode()
}

// GetDefault returns the default mode
func GetDefault() string {
return defaultMode
}

// SetDefaultMode sets the default mode
func SetDefaultMode(newDefaultMode string) {
if parseMode, err := parseMode(newDefaultMode); err == nil {
mode = parseMode
} else {
mode = defaultMode
}
}

// IsDev returns true if the mode is Dev or TestDev
func IsDev() bool {
mode := Get()

return mode == Dev || mode == TestDev
}

// updateGinMode updates the gin mode
func updateGinMode() {
var mode string

switch Get() {
case Dev:
mode = gin.DebugMode
case TestDev:
mode = gin.TestMode
case Prod:
mode = gin.ReleaseMode
default:
panic("unknown mode")
}

gin.SetMode(mode)
}
7 changes: 7 additions & 0 deletions server/model/version.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package model

type VersionInfo struct {
Version string `json:"version"`
BuildDate string `json:"build_date"`
Commit string `json:"commit"`
}
2 changes: 1 addition & 1 deletion server/pkg/database/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ type Model struct {
UpdatedAt time.Time `json:"updated_at,omitempty"`
}

func (m *Model) IDtoString() string {
func (m *Model) StringID() string {
return strconv.Itoa(int(m.ID))
}
1 change: 1 addition & 0 deletions server/router/router.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package router

0 comments on commit 7b8a752

Please sign in to comment.