예제 #1
0
        public static async Task <HashSet <Alias> > ReadAllByChar(CharacterModel character)
        {
            const string query = "SELECT * FROM aliases WHERE charID = @charID";

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                { // cumhere
                    var result = await dbConn.QueryAsync(query, new { charID = character.ID });

                    var aliases = new HashSet <Alias>();
                    foreach (var i in result)
                    {
                        aliases.Add(new Alias(i.CharID, i.AliasedID, i.AliasName, i.AliasDesc));
                    }
                    return(aliases);
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }

                return(null);
            }
        }
예제 #2
0
        public static async Task <bool> CreateAsync(AccountModel account, string emailAddress)
        {
            const string query = "INSERT INTO emailtokens(accountID, token, expirydate, emailaddress) VALUES (@accountid, @token, @expirydate, @emailaddress)";

            if (await ExistsAsync(account))
            {
                await RemoveAsync(account);
            }

            var emailToken = new EmailToken(account, emailAddress);

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    await dbConn.ExecuteAsync(query, new
                    {
                        accountid    = emailToken.Account.ID,
                        token        = emailToken.Token,
                        emailaddress = emailToken.EmailAddress,
                        expirydate   = emailToken.ExpiryDate
                    });

                    return(true);
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }
                return(false);
            }
        }
예제 #3
0
파일: Model.cs 프로젝트: kFxDaKing/RPServer
        public static async Task <IEnumerable <T> > ReadByKeyAsync <TC>(Expression <Func <TC> > expression, object searchKey)
        {
            var tAttribute = (TableAttribute)typeof(T).GetCustomAttributes(typeof(TableAttribute), true)[0];
            var tableName  = tAttribute.Name;

            if (tableName == null)
            {
                return(null);
            }


            var expressionBody   = expression.Body as MemberExpression;
            var expressionMember = expressionBody?.Member;
            var columnName       = expressionMember?.Name;

            if (columnName == null)
            {
                return(null);
            }

            var query = $"SELECT * FROM {tableName} WHERE {columnName} = @value;";

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    return(await dbConn.QueryAsync <T>(query, new { value = searchKey }));
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }
            }
            return(null);
        }
예제 #4
0
        public static async Task <bool> CreateAsync(int charid, int alisedid, string aliasName, string aliasDesc = "")
        {
            const string query = "INSERT INTO aliases(CharID, AliasedID, AliasName, AliasDesc) VALUES (@CharID, @AliasedID, @AliasName, @AliasDesc)";

            var newAlias = new Alias(charid, alisedid, aliasName, aliasDesc);

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    await dbConn.ExecuteAsync(query, new
                    {
                        CharID    = newAlias.CharID,
                        AliasedID = newAlias.AliasedID,
                        AliasName = newAlias.AliasName,
                        AliasDesc = newAlias.AliasDesc == "" ? null : newAlias.AliasDesc
                    });

                    return(true);
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }
            }
            return(false);
        }
예제 #5
0
        public static async Task <EmailToken> FetchAsync(AccountModel account)
        {
            const string query = "SELECT accountID, token, expirydate, emailaddress FROM emailtokens WHERE accountID = @accountid";

            if (!await ExistsAsync(account))
            {
                return(null);
            }

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    var result = await dbConn.QueryAsync(query, new { accountid = account.ID });

                    var unwrapped = result.SingleOrDefault();

                    if (unwrapped == null)
                    {
                        return(null);
                    }
                    return(new EmailToken(account, unwrapped.token, unwrapped.expirydate, unwrapped.emailaddress));
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }
            }
            throw new Exception("Error in [EmailToken.FetchAsync]");
        }
예제 #6
0
        public static async Task RemoveExpiredCodesAsync()
        {
            const string query = "DELETE FROM emailtokens WHERE expirydate < @current";

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    await dbConn.ExecuteAsync(query, new { current = DateTime.Now });
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }
            }
        }
예제 #7
0
파일: Model.cs 프로젝트: kFxDaKing/RPServer
        public static async Task <bool> ExistsAsync(int sqlID)
        {
            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    return((await dbConn.GetAsync <T>(sqlID)) != null);
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }

                return(false);
            }
        }
예제 #8
0
파일: Model.cs 프로젝트: kFxDaKing/RPServer
        public static async Task <T> ReadAsync(int sqlID)
        {
            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    return(await dbConn.GetAsync <T>(sqlID));
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }

                return(null);
            }
        }
예제 #9
0
파일: Model.cs 프로젝트: kFxDaKing/RPServer
        public static async Task <bool> DeleteAsync(T entry)
        {
            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    return(await dbConn.DeleteAsync(entry));
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }

                return(false);
            }
        }
예제 #10
0
파일: Model.cs 프로젝트: kFxDaKing/RPServer
        public static async Task <int> CreateAsync(T newEntry)
        {
            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    return(await dbConn.InsertAsync(newEntry));
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }

                return(-1);
            }
        }
예제 #11
0
        public static async Task <bool> ExistsAsync(AccountModel account)
        {
            const string query = "SELECT accountID FROM emailtokens WHERE accountID = @accountid";

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    var result = await dbConn.QueryAsync <int?>(query, new { accountid = account.ID });

                    return(result.Any());
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }
            }
            throw new Exception("There was an error in [EmailToken.ExistsAsync]");
        }
예제 #12
0
        public static async Task <bool> IsEmailTakenAsync(string emailAddress)
        {
            const string query = "SELECT emailaddress FROM emailtokens WHERE emailaddress = @emailaddress";

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    var result = await dbConn.QueryAsync(query, new { emailaddress = emailAddress });

                    return(result.Any());
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }
            }
            throw new Exception("There was an error in [EmailToken.IsEmailTakenAsync]");
        }
예제 #13
0
        private static async Task RemoveAsync(AccountModel account)
        {
            if (!await ExistsAsync(account))
            {
                return;
            }

            const string query = "DELETE FROM emailtokens WHERE accountID = @accountid";

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    await dbConn.ExecuteAsync(query, new { accountid = account.ID });
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }
            }
        }
예제 #14
0
        public static async Task <bool> Exist(int charid, int alisedID)
        {
            const string query = "SELECT * FROM aliases WHERE charID = @charID AND AliasedID = @aliasedID";

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    var result =
                        await dbConn.QueryAsync <int>(query, new { charID = charid, aliasedID = alisedID });

                    return(result.Any());
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }

                return(false);
            }
        }
예제 #15
0
        public static async Task <bool> DeleteAlias(Alias alias)
        {
            var query = "DELETE FROM aliases WHERE CharID = @charID AND AliasedID = @aliasedID";

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    await dbConn.ExecuteAsync(query, new
                    {
                        charID    = alias.CharID,
                        aliasedID = alias.AliasedID
                    });

                    return(true);
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }
            }
            return(false);
        }
예제 #16
0
        public async Task SaveAsync()
        {
            const string query = "UPDATE emailtokens " +
                                 "SET token = @token, emailAddress = @emailaddress, expirydate = @expirydate " +
                                 "WHERE accountID = @sqlId";

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    await dbConn.ExecuteAsync(query, new
                    {
                        sqlId        = Account.ID,
                        token        = Token,
                        emailaddress = EmailAddress,
                        expirydate   = ExpiryDate
                    });
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }
            }
        }
예제 #17
0
        public static async Task <bool> UpdateAlias(Alias alias)
        {
            var query = "UPDATE aliases SET aliasName = @aliasname, aliasDesc = @aliasdesc WHERE CharID = @charID AND AliasedID = @aliasedID";

            using (var dbConn = DbConnectionProvider.CreateDbConnection())
            {
                try
                {
                    await dbConn.ExecuteAsync(query, new
                    {
                        aliasname = alias.AliasName,
                        aliasdesc = alias.AliasDesc,
                        charID    = alias.CharID,
                        aliasedID = alias.AliasedID
                    });
                }
                catch (DbException ex)
                {
                    DbConnectionProvider.HandleDbException(ex);
                }

                return(false);
            }
        }