summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-08-03 00:12:39 +0500
committerilotterytea <iltsu@alright.party>2025-08-03 00:12:39 +0500
commit4f87786bb46a230c7c54af1d85093ce2c92d6781 (patch)
tree5ecbbb6376b8c3e23e1b56028ff8dcd173b3289e /cmd
parent42c76613dc906fa9a956a218f81f9f1a7b4b85fc (diff)
feat: join servers
Diffstat (limited to 'cmd')
-rw-r--r--cmd/irclogs/main.go59
-rw-r--r--cmd/logs/main.go7
2 files changed, 59 insertions, 7 deletions
diff --git a/cmd/irclogs/main.go b/cmd/irclogs/main.go
new file mode 100644
index 0000000..509447f
--- /dev/null
+++ b/cmd/irclogs/main.go
@@ -0,0 +1,59 @@
+package main
+
+import (
+ "database/sql"
+ "slices"
+ "strings"
+ "time"
+
+ irclogs "ilotterytea/irclogs/internal"
+ "log"
+
+ _ "github.com/go-sql-driver/mysql"
+)
+
+func main() {
+ db, err := sql.Open("mysql", "kochan:kochan@/irclogs")
+ if err != nil {
+ log.Panicf("Failed to establish a database connection: %v\n", err)
+ }
+ defer db.Close()
+
+ clients := []irclogs.IRCClient{}
+
+ for {
+ rows, err := db.Query("SELECT host, port, nick, pass, capabilities FROM servers")
+ if err != nil {
+ log.Fatalf("Failed to get servers: %v\n", err)
+ continue
+ }
+
+ for rows.Next() {
+ var host, nick, pass, caps string
+ var port int
+ if err = rows.Scan(&host, &port, &nick, &pass, &caps); err != nil {
+ log.Fatalf("Failed to scan rows: %v\n", err)
+ continue
+ }
+
+ if !slices.ContainsFunc(clients, func(c irclogs.IRCClient) bool {
+ return c.Host == host
+ }) {
+ log.Printf("Connecting to %s:%d...\n", host, port)
+ c := irclogs.NewIRCClient(host, port, nick, pass, strings.Split(caps, "\n"))
+
+ go func() {
+ if err = c.Connect(); err != nil {
+ log.Panicf("Failed to connect %s: %v\n", host, err)
+ }
+ }()
+
+ clients = append(clients, c)
+ }
+ }
+
+ rows.Close()
+
+ time.Sleep(5 * time.Second)
+ }
+}
diff --git a/cmd/logs/main.go b/cmd/logs/main.go
deleted file mode 100644
index eb6a1b5..0000000
--- a/cmd/logs/main.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package main
-
-import "fmt"
-
-func main() {
- fmt.Println("hello, world!")
-}