All checks were successful
check / check (push) Successful in 58s
Add a backward-compatible IRC protocol listener (RFC 1459/2812) that allows standard IRC clients (irssi, weechat, hexchat, etc.) to connect directly via TCP. Key features: - TCP listener on configurable port (IRC_LISTEN_ADDR env var, e.g. :6667) - Full IRC wire protocol parsing and formatting - Connection registration (NICK + USER + optional PASS) - Channel operations: JOIN, PART, MODE, TOPIC, NAMES, LIST, KICK, INVITE - Messaging: PRIVMSG, NOTICE (channel and direct) - Info commands: WHO, WHOIS, LUSERS, MOTD, AWAY - Operator support: OPER (with configured credentials) - PING/PONG keepalive - CAP negotiation (for modern client compatibility) - Full bridge to HTTP/JSON API (shared DB, broker, sessions) - Real-time message relay via broker notifications - Comprehensive test suite (parser + integration tests) The IRC listener is an optional component — disabled when IRC_LISTEN_ADDR is empty (the default). The Broker is now an Fx-provided dependency shared between HTTP handlers and the IRC server. closes #89
26 lines
558 B
Go
26 lines
558 B
Go
package db
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"log/slog"
|
|
)
|
|
|
|
// NewTestDatabaseFromConn creates a Database wrapping an
|
|
// existing *sql.DB connection. Intended for integration
|
|
// tests in other packages.
|
|
func NewTestDatabaseFromConn(conn *sql.DB) *Database {
|
|
return &Database{ //nolint:exhaustruct
|
|
conn: conn,
|
|
log: slog.Default(),
|
|
}
|
|
}
|
|
|
|
// RunMigrations applies all schema migrations. Exposed
|
|
// for integration tests in other packages.
|
|
func (database *Database) RunMigrations(
|
|
ctx context.Context,
|
|
) error {
|
|
return database.runMigrations(ctx)
|
|
}
|