tldr; nothing works

This commit is contained in:
2025-11-28 12:31:12 +01:00
parent 58849118d8
commit 9d541bd2bc
13 changed files with 426 additions and 127 deletions

46
app/src/database/logins.v Normal file
View 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
}