public bool TryGetKey(string code, out Key key) { Db db = new DigDb(); db.CommandText = @" SELECT * FROM `keys` WHERE code = ?code"; db.Parameters.Add("code", code); return db.TryGetResult(ConvertResult, out key); }
public bool TryGetKey(string code, string email, out Key key) { Db db = new DigDb(); db.CommandText = @" SELECT * FROM `keys` k INNER JOIN users u ON k.user = u.id WHERE k.code = ?code AND u.email = ?email"; db.Parameters.Add("code", code); db.Parameters.Add("email", email); return db.TryGetResult(ConvertResult, out key); }
Key ConvertResult(DbResult result) { int id = result.Get<int>("user"); User user; if (!userStore.TryGetUser(id, out user)) { throw new Exception("Unknown user"); } Key key = new Key(); key.User = user; key.Code = result.Get<string>("code"); key.Created = result.Get<DateTime>("created"); key.Valid = result.Get<int>("valid") == 1; return key; }
public void Void(Key key) { Db db = new DigDb(); db.CommandText = @" UPDATE `keys` SET valid = 0 WHERE code = ?code"; db.Parameters.Add("code", key.Code); db.ExecuteNonQuery(); Updates.AddUpdate(new VoidUpdate(key.User.Email, key.Code)); }