Added the authentication interface and associated struct to better organise / escapsulate the authentication logic. Added the LogError function. We'll put together a custom logger at some point which will supersede this. Reorganised things a little. Moved two queries into the query generator and inlined four with the query builder. Added SimpleInsertLeftJoin to the query generator. Added SimpleInsertSelect, SimpleInsertLeftJoin, and SimpleInsertInnerJoin to the query builder. Removed the undocumented password reset mechanism for security reasons. We have a proper interface for this in the control panel. Made one of the template compiler errors less cryptic. Fixed the CSS on widget_simple. Fixed a glitch in the weak password detector regarding unique character detection. Moved the responsive CSS in media.partial.css for Tempra Conflux, and Tempra Simple. Added the CreateUser method to the UserStore. Users are no longer logged out on all devices when logging out. Took the first step towards SEO URLs.
91 lines
3.2 KiB
Go
91 lines
3.2 KiB
Go
/* Copyright Azareal 2016 - 2017 */
|
|
// +build !pgsql !sqlite !mssql
|
|
package main
|
|
|
|
import "log"
|
|
import "database/sql"
|
|
import _ "github.com/go-sql-driver/mysql"
|
|
import "./query_gen/lib"
|
|
|
|
var get_activity_feed_by_watcher_stmt *sql.Stmt
|
|
var get_activity_count_by_watcher_stmt *sql.Stmt
|
|
var todays_post_count_stmt *sql.Stmt
|
|
var todays_topic_count_stmt *sql.Stmt
|
|
var todays_report_count_stmt *sql.Stmt
|
|
var todays_newuser_count_stmt *sql.Stmt
|
|
|
|
func _init_database() (err error) {
|
|
if(dbpassword != ""){
|
|
dbpassword = ":" + dbpassword
|
|
}
|
|
|
|
// Open the database connection
|
|
db, err = sql.Open("mysql",dbuser + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + dbname + "?collation=" + db_collation)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Make sure that the connection is alive
|
|
err = db.Ping()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Fetch the database version
|
|
db.QueryRow("SELECT VERSION()").Scan(&db_version)
|
|
|
|
// Set the number of max open connections
|
|
db.SetMaxOpenConns(64)
|
|
|
|
// Build the generated prepared statements, we are going to slowly move the queries over to the query generator rather than writing them all by hand, this'll make it easier for us to implement database adapters for other databases like PostgreSQL, MSSQL, SQlite, etc.
|
|
err = gen_mysql()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Ready the query builder
|
|
qgen.Builder.SetConn(db)
|
|
err = qgen.Builder.SetAdapter("mysql")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Print("Preparing get_activity_feed_by_watcher statement.")
|
|
get_activity_feed_by_watcher_stmt, err = db.Prepare("SELECT activity_stream_matches.asid, activity_stream.actor, activity_stream.targetUser, activity_stream.event, activity_stream.elementType, activity_stream.elementID FROM `activity_stream_matches` INNER JOIN `activity_stream` ON activity_stream_matches.asid = activity_stream.asid AND activity_stream_matches.watcher != activity_stream.actor WHERE `watcher` = ? ORDER BY activity_stream.asid ASC LIMIT 8")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Print("Preparing get_activity_count_by_watcher statement.")
|
|
get_activity_count_by_watcher_stmt, err = db.Prepare("SELECT count(*) FROM `activity_stream_matches` INNER JOIN `activity_stream` ON activity_stream_matches.asid = activity_stream.asid AND activity_stream_matches.watcher != activity_stream.actor WHERE `watcher` = ?")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Print("Preparing todays_post_count statement.")
|
|
todays_post_count_stmt, err = db.Prepare("select count(*) from replies where createdAt BETWEEN (now() - interval 1 day) and now()")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Print("Preparing todays_topic_count statement.")
|
|
todays_topic_count_stmt, err = db.Prepare("select count(*) from topics where createdAt BETWEEN (now() - interval 1 day) and now()")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Print("Preparing todays_report_count statement.")
|
|
todays_report_count_stmt, err = db.Prepare("select count(*) from topics where createdAt BETWEEN (now() - interval 1 day) and now() and parentID = 1")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Print("Preparing todays_newuser_count statement.")
|
|
todays_newuser_count_stmt, err = db.Prepare("select count(*) from users where createdAt BETWEEN (now() - interval 1 day) and now()")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|