Start Restructure of project

pull/5/head
DustyP 5 years ago
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,

@ -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"

@ -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

@ -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…
Cancel
Save