diff --git a/internal/orm.go b/internal/orm.go index 47da321270f751df8a6cbf763a901cf710a996b0..62df99a1a08c8d9940f068b08f5aa4cad3610e74 100644 --- a/internal/orm.go +++ b/internal/orm.go @@ -3,9 +3,9 @@ package wtfd import ( "errors" "fmt" - "golang.org/x/crypto/bcrypt" "github.com/go-xorm/xorm" _ "github.com/mattn/go-sqlite3" // needed for xorm + "golang.org/x/crypto/bcrypt" "os" "xorm.io/core" ) @@ -63,7 +63,6 @@ func Login(username, passwd string) error { } - // NewUser creates a new user object func NewUser(name, password, displayname string) (User, error) { if Contains(name, displayname) { @@ -78,13 +77,13 @@ func NewUser(name, password, displayname string) (User, error) { return User{Name: name, Hash: hash, DisplayName: displayname}, nil } + // Contains looks if a username is in the datenbank func Contains(username, displayname string) bool { count, _ := ormUserExists(User{Name: username, DisplayName: displayname}) return count } - // Get gets username based on username func Get(username string) (User, error) { user, err := ormLoadUser(username) @@ -148,6 +147,17 @@ func ormNewUser(user User) error { return err } +// ormGetSolveCount returns the number of solves for the Challenge chall +func ormGetSolveCount(chall Challenge) int64 { + + count, err := engine.Where("ChallengeName = ?", chall.Name).Count(_ORMChallengesByUser{}) + if err != nil { + return 0 + } + return count + +} + // Update existing user record (user.Name) with other values from user // Solved challenges WON'T be updated (refer to ormChallengeSolved) func ormUpdateUser(user User) error { diff --git a/internal/server.go b/internal/server.go index 0910693ebbeb4fd9e0dece400df9744984beb865..3f709fc26882e741a4b24efd86542eb6b808830c 100644 --- a/internal/server.go +++ b/internal/server.go @@ -332,7 +332,7 @@ func detailview(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusBadRequest) return } - _, _ = fmt.Fprintf(w, "%s", chall.Description) + _, _ = fmt.Fprintf(w, "%s<br><p>Solves: %d</p>", chall.Description, ormGetSolveCount(*chall)) }