tldr; nothing works
This commit is contained in:
46
app/src/database/logins.v
Normal file
46
app/src/database/logins.v
Normal file
@@ -0,0 +1,46 @@
|
||||
module database
|
||||
|
||||
import time
|
||||
|
||||
@[table: 'login_attempts']
|
||||
pub struct Logins {
|
||||
mut:
|
||||
ip string @[primary]
|
||||
attempts int @[nonnull]
|
||||
attempt_time time.Time @[nonnull]
|
||||
}
|
||||
|
||||
pub fn Logins.by_ip(ip string, mut database_ Database) ?Logins {
|
||||
query := database_.get_query_builder[Logins]().where('ip = ?', ip) or { return none }
|
||||
result := database_.query[Logins](query) or { return none }
|
||||
|
||||
return result.first()
|
||||
}
|
||||
|
||||
pub fn Logins.create_or_update(ip string, mut database_ Database) ?Logins {
|
||||
mut login := Logins{
|
||||
ip: ip
|
||||
attempts: 1
|
||||
attempt_time: time.now()
|
||||
}
|
||||
|
||||
if existing := Logins.by_ip(ip, mut database_) {
|
||||
login.attempts = existing.attempts + 1
|
||||
login.attempt_time = time.now()
|
||||
|
||||
db := database_.get_connection() or { panic(err) }
|
||||
|
||||
sql db {
|
||||
update Logins set attempts = login.attempts, attempt_time = login.attempt_time
|
||||
where ip == ip
|
||||
} or { return none }
|
||||
} else {
|
||||
db := database_.get_connection() or { panic(err) }
|
||||
|
||||
sql db {
|
||||
insert login into Logins
|
||||
} or { return none }
|
||||
}
|
||||
|
||||
return login
|
||||
}
|
||||
Reference in New Issue
Block a user