Start Restructure of project
This commit is contained in:
parent
4db28f5c0b
commit
6cc5e042d5
@ -1,32 +0,0 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
# goff-db:
|
||||
# image: postgres
|
||||
# ports:
|
||||
# - "5432:5432"
|
||||
# volumes:
|
||||
# - "${PWD}/postgres.conf:/etc/postgresql/postgresql.conf"
|
||||
# - "goff-db:/var/lib/postgresql/data:rw"
|
||||
# env_file: ${PWD}/.env
|
||||
|
||||
goff:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: "${PWD}/Dockerfile"
|
||||
env_file: ${PWD}/.env
|
||||
logging:
|
||||
driver: awslogs
|
||||
options:
|
||||
awslogs-region: us-east-1
|
||||
awslogs-group: "/docker/goff/production"
|
||||
# depends_on:
|
||||
# - goff-db
|
||||
environment:
|
||||
- DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}?sslmode=disable
|
||||
# links:
|
||||
# - goff-db:goff.db
|
||||
|
||||
#volumes:
|
||||
# goff-db:
|
||||
# external: true
|
||||
@ -1,32 +0,0 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
# goff-db:
|
||||
# image: postgres
|
||||
# ports:
|
||||
# - "5432:5432"
|
||||
# volumes:
|
||||
# - "${PWD}/postgres.conf:/etc/postgresql/postgresql.conf"
|
||||
# - "goff-db:/var/lib/postgresql/data:rw"
|
||||
# env_file: ${PWD}/.env
|
||||
|
||||
goff:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: "${PWD}/Dockerfile"
|
||||
env_file: ${PWD}/.env
|
||||
# logging:
|
||||
# driver: awslogs
|
||||
# options:
|
||||
# awslogs-region: us-east-1
|
||||
# awslogs-group: "/docker/goff/production"
|
||||
# depends_on:
|
||||
# - goff-db
|
||||
environment:
|
||||
- DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}?sslmode=disable
|
||||
# links:
|
||||
# - goff-db:goff.db
|
||||
|
||||
#volumes:
|
||||
# goff-db:
|
||||
# external: true
|
||||
@ -133,3 +133,34 @@ func OnGuildMemberRemoveLogging(s *discordgo.Session, member *discordgo.GuildMem
|
||||
}
|
||||
s.ChannelMessageSendEmbed(channelID, embed)
|
||||
}
|
||||
|
||||
func AddMemberToDatabase(s *discordgo.Session, m *discordgo.GuildMemberAdd) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
log.Println("Recovered from panic in AddMemberToDatabase", r)
|
||||
}
|
||||
}()
|
||||
queryString := `INSERT INTO users (id, banned, logging, is_active, is_staff, is_admin)
|
||||
VALUES ($1, false, false, true, false, false)`
|
||||
_, err := utils.Database.Exec(queryString, m.User.ID)
|
||||
if err != nil {
|
||||
log.Println(fmt.Errorf("error inserting %s into database: %w", m.User.ID, err))
|
||||
return
|
||||
}
|
||||
log.Printf("New User: %s\n", m.User.ID)
|
||||
}
|
||||
|
||||
func MarkMemberInactive(s *discordgo.Session, m *discordgo.GuildMemberRemove) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
log.Println("Recovered from panic in MarkMemberInactive")
|
||||
}
|
||||
}()
|
||||
queryString := `UPDATE users SET is_active = false WHERE id = $1`
|
||||
_, err := utils.Database.Exec(queryString, m.User.ID)
|
||||
if err != nil {
|
||||
log.Println(fmt.Errorf("error marking %s as inactive: %w", m.User.ID, err))
|
||||
return
|
||||
}
|
||||
log.Println("User left: %s")
|
||||
}
|
||||
|
||||
@ -15,7 +15,7 @@ func AddCommandHandlers(h *disgoman.CommandManager) {
|
||||
// run - function to run - func(anpan.Context, []string) / CommandRunFunc
|
||||
_ = h.AddCommand(&disgoman.Command{
|
||||
Name: "ping",
|
||||
Aliases: nil,
|
||||
Aliases: []string{" "},
|
||||
Description: "Check the bot's ping",
|
||||
OwnerOnly: false,
|
||||
Hidden: false,
|
||||
|
||||
22
guild.go
Normal file
22
guild.go
Normal file
@ -0,0 +1,22 @@
|
||||
package main
|
||||
|
||||
import "database/sql"
|
||||
|
||||
type Guild struct {
|
||||
ID string
|
||||
WelcomeMessage string
|
||||
GoodbyeMessage string
|
||||
LoggingChannel string
|
||||
WelcomeChannel string
|
||||
PuzzleChannel string
|
||||
PuzzleRole sql.NullString
|
||||
}
|
||||
|
||||
type GuildService interface {
|
||||
Guild(id string) (*Guild, error)
|
||||
Guilds() ([]*Guild, error)
|
||||
CreateGuild(g *Guild) error
|
||||
DeleteGuild(g *Guild) error
|
||||
GuildUsers(g *Guild) ([]*User, error)
|
||||
UpdateGuild(g *Guild) error
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package utils
|
||||
package postgres
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
@ -1,4 +1,4 @@
|
||||
package utils
|
||||
package postgres
|
||||
|
||||
import "log"
|
||||
|
||||
37
postgres/user.go
Normal file
37
postgres/user.go
Normal file
@ -0,0 +1,37 @@
|
||||
package postgres
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
"github.com/dustinpianalto/goff"
|
||||
)
|
||||
|
||||
type UserService struct {
|
||||
DB *sql.DB
|
||||
}
|
||||
|
||||
func (s *UserService) User(id string) (*goff.User, error) {
|
||||
var u goff.User
|
||||
queryString := `SELECT id, banned, logging, steam_id, is_active, is_staff, is_admin
|
||||
FROM users WHERE id=$1`
|
||||
row := s.DB.QueryRow(queryString, id)
|
||||
if err := row.Scan(&u.ID, &u.Banned, &u.Logging, &u.SteamID, &u.IsActive, &u.IsStaff, &u.IsAdmin); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var guilds []string
|
||||
queryString = `SELECT guild_id from x_users_guilds WHERE user_id=$1`
|
||||
rows, err := s.DB.Query(queryString, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for rows.Next() {
|
||||
var guildID string
|
||||
err = rows.Scan(&guildID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
guilds = append(guilds, guildID)
|
||||
}
|
||||
u.Guilds = guilds
|
||||
return &u, nil
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
/usr/local/bin/docker-compose build || exit
|
||||
/usr/local/bin/docker-compose up -d
|
||||
22
user.go
Normal file
22
user.go
Normal file
@ -0,0 +1,22 @@
|
||||
package main
|
||||
|
||||
type User struct {
|
||||
ID string
|
||||
Banned bool
|
||||
Logging bool
|
||||
SteamID string
|
||||
IsActive bool
|
||||
IsStaff bool
|
||||
IsAdmin bool
|
||||
Guilds []string
|
||||
}
|
||||
|
||||
type UserService interface {
|
||||
User(id string) (*User, error)
|
||||
CreateUser(u *User) error
|
||||
DeleteUser(u *User) error
|
||||
MarkUserInactive(u *User) error
|
||||
AddUserToGuild(u *User, g *Guild) error
|
||||
RemoveUserFromGuild(u *User, g *Guild) error
|
||||
UpdateUser(u *User) error
|
||||
}
|
||||
@ -11,3 +11,14 @@ type Guild struct {
|
||||
PuzzleChannel string
|
||||
PuzzleRole sql.NullString
|
||||
}
|
||||
|
||||
type User struct {
|
||||
ID string
|
||||
Banned bool
|
||||
Logging bool
|
||||
SteamID string
|
||||
IsActive bool
|
||||
IsStaff bool
|
||||
IsAdmin bool
|
||||
Guilds []string
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user