Added UserDA

This commit is contained in:
2025-02-23 12:29:12 -05:00
parent 2b29be9882
commit a8d238b1e5

View File

@@ -0,0 +1,135 @@
using System;
using System.Text;
using MySql.Data.MySqlClient;
using MarketData.Utils;
using MarketData.MarketDataModel.User;
namespace MarketData.DataAccess
{
public class UserDA
{
private UserDA()
{
}
public static bool UserExists(String username)
{
MySqlConnection sqlConnection = null;
MySqlCommand sqlCommand=null;
MySqlDataReader sqlDataReader = null;
String strQuery = null;
try
{
if(String.IsNullOrEmpty(username))return false;
username = username.ToLower();
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("user_data"));
StringBuilder sb = new StringBuilder();
sb.Append("select count(*) from users where username=").Append("'").Append(username).Append("'");
strQuery = sb.ToString();
sqlCommand = new MySqlCommand(strQuery, sqlConnection);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlDataReader = sqlCommand.ExecuteReader();
if(!sqlDataReader.Read())return false;
int count = sqlDataReader.GetInt32(0);
return count>0?true:false;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,exception);
return false;
}
finally
{
if(null != sqlDataReader)sqlDataReader.Dispose();
if(null != sqlCommand)sqlCommand.Dispose();
if(null != sqlConnection) sqlConnection.Close();
}
}
public static User GetUser(String username)
{
MySqlConnection sqlConnection = null;
MySqlCommand sqlCommand=null;
MySqlDataReader sqlDataReader = null;
String strQuery = null;
User user = new User();
try
{
if(null == username)return null;
if(!UserExists(username))return null;
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("user_data"));
StringBuilder sb = new StringBuilder();
sb.Append("select username, salt, hash from users where ");
sb.Append("username=").Append("'").Append(username).Append("'");
sb.Append(";");
strQuery = sb.ToString();
sqlCommand = new MySqlCommand(strQuery, sqlConnection);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlDataReader = sqlCommand.ExecuteReader();
if(sqlDataReader.Read())
{
user.Username = sqlDataReader.GetString(0);
user.Salt = sqlDataReader.GetString(1);
user.Hash = sqlDataReader.GetString(2);
}
return user;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,exception);
return null;
}
finally
{
if(null!=sqlDataReader)sqlDataReader.Dispose();
if(null!=sqlCommand)sqlCommand.Dispose();
if (null != sqlConnection) sqlConnection.Close();
}
}
public static bool AddUser(User user)
{
MySqlConnection sqlConnection = null;
MySqlTransaction sqlTransaction = null;
MySqlCommand sqlCommand=null;
String strQuery = null;
try
{
if(null == user || null == user.Username || null == user.Hash || null == user.Salt)return false;
if(UserExists(user.Username))return false;
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("user_data"));
sqlTransaction = sqlConnection.BeginTransaction();
StringBuilder sb = new StringBuilder();
sb.Append("insert into users(username,hash,salt,created_by,created_on,modified_by,modified_on) values(");
sb.Append(SqlUtils.AddQuotes(user.Username)).Append(",");
sb.Append(SqlUtils.AddQuotes(user.Hash)).Append(",");
sb.Append(SqlUtils.AddQuotes(user.Salt)).Append(",");
sb.Append("CURRENT_USER").Append(",");
sb.Append("CURRENT_TIMESTAMP").Append(",");
sb.Append("CURRENT_USER").Append(",");
sb.Append("CURRENT_TIMESTAMP").Append("");
sb.Append(")");
strQuery = sb.ToString();
sqlCommand = new MySqlCommand(strQuery, sqlConnection, sqlTransaction);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlCommand.ExecuteNonQuery();
sqlTransaction.Commit();
return true;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,exception);
return false;
}
finally
{
if(null!=sqlCommand)sqlCommand.Dispose();
if (null != sqlConnection) sqlConnection.Close();
if (null != sqlTransaction) sqlTransaction.Dispose();
}
}
}
}