Merge branch 'master' into Long_archivePos

This commit is contained in:
Lunastra 2021-12-14 19:13:18 -08:00
commit a2c5e0a1f9
24 changed files with 446 additions and 531 deletions

View File

@ -1,7 +0,0 @@
namespace TeamHobby.HobbyProjectGenerator.DataAccess
{
public class Class1
{
}
}

View File

@ -17,9 +17,9 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
public SqlDAO(string info) public SqlDAO(string info)
{ {
try { try {
Console.WriteLine("Establising Connection..."); //Console.WriteLine("Establising Connection...");
_conn = new OdbcConnection(info); _conn = new OdbcConnection(info);
Console.WriteLine("Connection established."); //Console.WriteLine("Connection established.");
} }
catch { catch {
//_conn = null; //_conn = null;

View File

@ -4,20 +4,12 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
{ {
public class UiPrint public class UiPrint
{ {
public void InitialMenu()
{
// Create intial menu
Console.WriteLine("What would you like to access?");
int num = 1;
Console.WriteLine(num + ".User Management");
num += 1;
Console.WriteLine(num + ".Logging");
}
public void UserManagementMenu(string username) public void UserManagementMenu(string username)
{ {
// Menu for all UserManagement options // Menu for all UserManagement options
int menu = 0; int menu = 0;
Console.WriteLine($"Welcome {username} to User Management.\n"); Console.WriteLine("-------------------------------------\n");
Console.WriteLine($"\nWelcome {username} to User Management.\n");
Console.WriteLine("What would you like to do?\n"); Console.WriteLine("What would you like to do?\n");
Console.WriteLine(menu + ") To exit User Management.\n"); Console.WriteLine(menu + ") To exit User Management.\n");
menu += 1; menu += 1;
@ -31,9 +23,9 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
menu += 1; menu += 1;
Console.WriteLine(menu + ") Enable an account.\n"); Console.WriteLine(menu + ") Enable an account.\n");
menu += 1; menu += 1;
Console.WriteLine(menu + ") View logs.\n"); Console.WriteLine(menu + ") View log path.\n");
menu += 1; menu += 1;
Console.WriteLine(menu + ") View archive.\n"); Console.WriteLine(menu + ") View archive path.\n");
} }
} }
} }

View File

@ -1,4 +1,4 @@
using System; /*using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -14,3 +14,4 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
} }
} }
*/

View File

@ -1,4 +1,4 @@
using System; /*using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -14,3 +14,4 @@ namespace TeamHobby.HobbyProjectGenerator.Logging.Contracts
} }
} }
} }
*/

View File

@ -1,4 +1,4 @@
using System; /*using System;
namespace TeamHobby.HobbyProjectGenerator.Logging namespace TeamHobby.HobbyProjectGenerator.Logging
{ {
@ -21,4 +21,4 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
} }
} }*/

View File

@ -1,4 +1,4 @@
using System; /*using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -18,3 +18,4 @@ namespace TeamHobby.HobbyProjectGenerator.Logging.Implementations
} }
} }
} }
*/

View File

@ -55,4 +55,4 @@
// } // }
// } // }
// } // }

View File

@ -1,4 +1,4 @@
using System; /*using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -51,4 +51,3 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
} }
} }

View File

@ -1,4 +1,4 @@
using System; /*using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -42,3 +42,4 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
} }
} }
*/

View File

@ -1,10 +0,0 @@
namespace TeamHobby.HobbyProjectGenerator.Models
{
public class Credentials
{
public string userName { get; set; }
// Syntactic sugar
public string Password { get; set; }
}
}

View File

@ -29,53 +29,74 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
return false; return false;
} }
} }
public bool EditUserRecord(UserAccount newUser, string CreatedBy, IDataSource<string> dbSource) public bool EditUserRecord(UserAccount editUser, string CreatedBy, IDataSource<string> dbSource)
{ {
/* // Insert into users table try
string sqlUser = $"UPDATE hobby.roles r SET r.Role = 'regular',r.CreatedBy = 'colin'WHERE r.RoleID = 5; ";
Object insertNewUser = dbSource.WriteData(sqlUser);
// Insert into users table
string sqlRoles = $"INSERT INTO roles (Role, CreatedBy, CreatedDate) " +
$"VALUES ('{newUser.NewRole}', '{CreatedBy}', NOW());";
Object insertNewRole = dbSource.WriteData(sqlUser);
// Create string for confirming user account
string confirmUser = $"Select * from users where username = {newUser.NewUserName} " +
$"and password = {newUser.NewPassword};";
Object conUser = dbSource.ReadData(confirmUser);
//Console.WriteLine("type of Reesult:" + confirmAdmin.GetType());
OdbcDataReader reader = null;
if (conUser.GetType() == typeof(OdbcDataReader))
{ {
reader = (OdbcDataReader)conUser; // Insert into users table
} string sqlUser = $"UPDATE users t SET t.Password = '{editUser.password}', " +
$"t.Role = '{editUser.role}',t.Email = '{editUser.email}' " +
$"WHERE t.UserName = '{editUser.username}';";
// Read Sql query results bool updateNewUser = dbSource.UpdateData(sqlUser);
while (reader.Read()) return updateNewUser;
}
catch (Exception ex)
{ {
Console.WriteLine(reader.GetString(0)); return false;
} }
}
public bool DeleteUserRecord(UserAccount deleteUser, string CreatedBy, IDataSource<string> dbSource)
{
try
{
// Insert into users table
string sqlUser = $"DELETE from users WHERE UserName = '{deleteUser.username}' " +
$"and Password = '{deleteUser.password}';";
SqlDAO sqlDS = (SqlDAO)dbSource; bool deleteNewUser = dbSource.DeleteData(sqlUser);
Console.WriteLine(""); return deleteNewUser;
// Closing the connection }
sqlDS.getConnection().Close();*/ catch (Exception ex)
return true; {
return false;
}
} }
public bool DeleteUserRecord(UserAccount newUser, IDataSource<string> dbSource) public bool DisableUser(UserAccount disableUser, string CreatedBy, IDataSource<string> dbSource)
{ {
return true; try
{
// Insert into users table
string sqlUser = $"UPDATE users u SET u.IsActive = 0 WHERE u.UserName = '{disableUser.username}'" +
$"and u.Role = '{disableUser.role}';";
bool disableNewUser = dbSource.UpdateData(sqlUser);
return disableNewUser;
}
catch (Exception ex)
{
return false;
}
} }
public bool DisableUser(UserAccount newUser, IDataSource<string> dbSource) public bool EnableUser(UserAccount enableUser, string CreatedBy, IDataSource<string> dbSource)
{ {
return true; try
} {
public bool EnableUser(UserAccount newUser, IDataSource<string> dbSource) // Insert into users table
{ string sqlUser = $"UPDATE users u SET u.IsActive = 1 WHERE u.UserName = '{enableUser.username}'" +
return true; $"and u.Role = '{enableUser.role}';";
bool disableNewUser = dbSource.UpdateData(sqlUser);
return disableNewUser;
}
catch (Exception ex)
{
return false;
}
} }
} }
} }

View File

@ -171,10 +171,11 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
Console.WriteLine(""); Console.WriteLine("");
// Closing the connection // Closing the connection
sqlDS.getConnection().Close(); sqlDS.GetConnection().Close();
if (checkSql == "Admin") if (checkSql == "Admin")
{ {
Console.WriteLine("-- Logged in successfully.");
return true; return true;
} }
else else
@ -204,12 +205,12 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
AccountService accountService = new AccountService(); AccountService accountService = new AccountService();
// Create credentials object for new inptus // Create credentials object for new inptus
GetCredentials newCredentials = new GetCredentials(); GetCredentials newCredentials = new GetCredentials();
// Print User Management menu
ui.UserManagementMenu(user.username);
// Create bool object for menu loop // Create bool object for menu loop
bool menuLoop = true; bool menuLoop = true;
// Create loop for menu // Create loop for menu
while (menuLoop is true) { while (menuLoop is true) {
// Print User Management menu
ui.UserManagementMenu(user.username);
// Get user choice // Get user choice
int menuChoice = Convert.ToInt32(Console.ReadLine()); int menuChoice = Convert.ToInt32(Console.ReadLine());
// Complete the appropriate action // Complete the appropriate action
@ -217,38 +218,91 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
{ {
// Exit menu // Exit menu
case 0: case 0:
return "Exiting UserManagement.\n"; return "Back to Login";
break;
// Create account // Create account
case 1: case 1:
// Get all credentials and create newUser
UserAccount newUser = new UserAccount(newCredentials.GetUserName(), UserAccount newUser = new UserAccount(newCredentials.GetUserName(),
newCredentials.GetPassword(), newCredentials.GetEmail(), newCredentials.ConfirmPassword(), newCredentials.GetEmail(),
newCredentials.GetRole(), DateTime.UtcNow); newCredentials.GetRole(), DateTime.UtcNow);
accountService.CreateUserRecord(newUser,user.username, dbSource); bool accountValid = accountService.CreateUserRecord(newUser, user.username, dbSource);
break; if (accountValid is true)
{
Console.WriteLine("\nAccount created Successfully");
break;
}
else
{
return "Database Timed out";
}
// Edit account // Edit account
case 2: case 2:
/* UserAccount newEditUser = new UserAccount(newCredentials.GetUserName(), // State what account is being edited
newCredentials.GetPassword(), DateTime.UtcNow); string userName = newCredentials.GetUserName();
accountService.EditUserRecord(newEditUser, dbSource);*/ string userRole = newCredentials.GetRole();
// Notify the user of what can be edited
Console.WriteLine($"\n****The following information will be used to update {userName}");
// Get updated parameters
UserAccount newEditUser = new UserAccount(userName,
newCredentials.GetPassword(), newCredentials.GetEmail(),
newCredentials.GetRole(), DateTime.UtcNow);
bool editValid = accountService.EditUserRecord(newEditUser, user.username, dbSource);
if (editValid is true)
{
Console.WriteLine("\nAccount updated Successfully");
break;
}
else
{
return "Database Timed out";
}
break; break;
// Delete account // Delete account
case 3: case 3:
UserAccount newDeleteUser = new UserAccount(newCredentials.GetUserName(), UserAccount newDeleteUser = new UserAccount(newCredentials.GetUserName(),
newCredentials.GetPassword(), DateTime.UtcNow); newCredentials.GetPassword(), DateTime.UtcNow);
accountService.DeleteUserRecord(newDeleteUser, dbSource); bool deleteValid = accountService.DeleteUserRecord(newDeleteUser, user.username , dbSource);
if (deleteValid is true)
{
Console.WriteLine("\nAccount deleted Successfully");
break;
}
else
{
return "User does not exist";
}
break; break;
// Disable account // Disable account
case 4: case 4:
UserAccount newDisableUser = new UserAccount(newCredentials.GetUserName(), UserAccount newDisableUser = new UserAccount(newCredentials.GetUserName(),
newCredentials.GetPassword(), DateTime.UtcNow); newCredentials.GetRole());
accountService.DisableUser(newDisableUser, dbSource); bool disableValid = accountService.DisableUser(newDisableUser, user.username , dbSource);
if (disableValid is true)
{
Console.WriteLine("\nAccount disabled Successfully");
break;
}
else
{
return "User does not exist";
}
break; break;
// Enable account // Enable account
case 5: case 5:
UserAccount newEnableUser = new UserAccount(newCredentials.GetUserName(), UserAccount newEnableUser = new UserAccount(newCredentials.GetUserName(),
newCredentials.GetPassword(), DateTime.UtcNow); newCredentials.GetRole());
accountService.EnableUser(newEnableUser, dbSource); bool enableValid = accountService.EnableUser(newEnableUser, user.username , dbSource);
if (enableValid is true)
{
Console.WriteLine("\nAccount enabled Successfully");
break;
}
else
{
return "User does not exist";
}
break; break;
// View logs // View logs
case 6: case 6:
@ -261,9 +315,7 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
break; break;
} }
} }
return "Back to Login";
string dbAction = user.username;
return dbAction;
} }
} }
} }

View File

@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TeamHobby.HobbyProjectGenerator.UserManagement namespace TeamHobby.HobbyProjectGenerator.UserManagement
{ { // Class for getting user credentials
public class GetCredentials public class GetCredentials
{ {
public string? GetUserName() public string? GetUserName()
@ -20,11 +20,26 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
string? userPassword = Console.ReadLine(); string? userPassword = Console.ReadLine();
return userPassword; return userPassword;
} }
/*public string ConfirmPassword() public string ConfirmPassword()
{ {
Console.WriteLine(); while (true)
string confirmPassword = newUser.NewPassword; {
}*/ Console.WriteLine("Please enter a password:");
string? userPassword = Console.ReadLine();
// Confirm Password
Console.WriteLine("Please re-enter the password:");
string checkPsswd = Console.ReadLine();
// Check if passwords match
if (userPassword == checkPsswd)
{
return userPassword;
}
else
{
Console.WriteLine("Passwords do not match.\n");
}
}
}
public string GetEmail() public string GetEmail()
{ {
Console.WriteLine("Please enter an email:"); Console.WriteLine("Please enter an email:");
@ -52,6 +67,12 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
_password = pwd; _password = pwd;
_Time = TimeStamp; _Time = TimeStamp;
} }
public UserAccount(string un, string role)
{
_userName = un;
_Role = role;
_Time = DateTime.UtcNow;
}
public UserAccount(string newUN, string newPWD, string Email, string role, DateTime newTime) public UserAccount(string newUN, string newPWD, string Email, string role, DateTime newTime)
{ {
_userName = newUN; _userName = newUN;

View File

@ -4,6 +4,10 @@ Microsoft Visual Studio Solution File, Format Version 12.00
VisualStudioVersion = 17.0.31919.166 VisualStudioVersion = 17.0.31919.166
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.UserManagement.Tests", "..\TeamHobby.UserManagement.Tests\TeamHobby.UserManagement.Tests.csproj", "{5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.UserManagement.Tests", "..\TeamHobby.UserManagement.Tests\TeamHobby.UserManagement.Tests.csproj", "{5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}"
ProjectSection(ProjectDependencies) = postProject
{AA48A66C-FA36-4AF9-A782-CEC22838EB8F} = {AA48A66C-FA36-4AF9-A782-CEC22838EB8F}
{2E7193B8-86B6-48DA-9671-CD84615A5F5D} = {2E7193B8-86B6-48DA-9671-CD84615A5F5D}
EndProjectSection
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Models", "..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj", "{75DED6C2-D404-4E71-A58B-0F616DB5C062}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Models", "..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj", "{75DED6C2-D404-4E71-A58B-0F616DB5C062}"
EndProject EndProject
@ -11,18 +15,21 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "main", "..\main\main.csproj
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Archive", "..\TeamHobby.HobbyProjectGenerator.Archive\TeamHobby.HobbyProjectGenerator.Archive.csproj", "{B88ED0D9-72E2-4245-BD8F-856FF42E500C}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Archive", "..\TeamHobby.HobbyProjectGenerator.Archive\TeamHobby.HobbyProjectGenerator.Archive.csproj", "{B88ED0D9-72E2-4245-BD8F-856FF42E500C}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.Main", "..\TeamHobby.Main\TeamHobby.Main.csproj", "{ED126EFB-B337-42F9-BE4B-65A5AE90503B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.DataAccess", "..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj", "{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.DataAccess", "..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj", "{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Logging", "..\TeamHobby.HobbyProjectGenerator.Logging\TeamHobby.HobbyProjectGenerator.Logging.csproj", "{C0494115-838E-43A3-8896-133E5D1E874A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.UserManagement", "..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj", "{2E7193B8-86B6-48DA-9671-CD84615A5F5D}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.UserManagement", "..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj", "{2E7193B8-86B6-48DA-9671-CD84615A5F5D}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Logging.Tests", "..\TeamHobby.HobbyProjectGenerator.Logging.Tests\TeamHobby.HobbyProjectGenerator.Logging.Tests.csproj", "{CA8D11CF-807C-4C90-A529-0371F73518F6}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Logging.Tests", "..\TeamHobby.HobbyProjectGenerator.Logging.Tests\TeamHobby.HobbyProjectGenerator.Logging.Tests.csproj", "{CA8D11CF-807C-4C90-A529-0371F73518F6}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.ArchiveTests", "..\TeamHobby.HobbyProjectGenerator.ArchiveTests\TeamHobby.HobbyProjectGenerator.ArchiveTests.csproj", "{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.ArchiveTests", "..\TeamHobby.HobbyProjectGenerator.ArchiveTests\TeamHobby.HobbyProjectGenerator.ArchiveTests.csproj", "{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.UserManagement.xTests", "TeamHobby.UserManagement.xTests\TeamHobby.UserManagement.xTests.csproj", "{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D29D9225-3748-4067-AF07-E677A525EF39}"
ProjectSection(SolutionItems) = preProject
TeamHobby.HobbyProjectGenerator.csproj = TeamHobby.HobbyProjectGenerator.csproj
EndProjectSection
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -67,6 +74,13 @@ Global
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Debug|Any CPU.Build.0 = Debug|Any CPU {C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.ActiveCfg = Release|Any CPU {C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.Build.0 = Release|Any CPU {C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.Build.0 = Release|Any CPU
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.Build.0 = Release|Any CPU
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -0,0 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.1.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj" />
<ProjectReference Include="..\..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,105 @@
using System;
using Xunit;
using Xunit.Abstractions;
using System.Threading;
using TeamHobby.HobbyProjectGenerator.UserManagement;
using TeamHobby.HobbyProjectGenerator.DataAccess;
namespace TeamHobby.UserManagement.xTests
{
public class UnitTest1
{
ITestOutputHelper output;
public UnitTest1(ITestOutputHelper output)
{
this.output = output;
}
[Fact]
public void SingleOperationinFiveSec()
{
// Arrange
DateTime sTime = DateTime.Now;
var TestAcc = new UserAccount("newUser", "4567", "email@a.com", "regular", sTime);
var serviceTest = new AccountService();
string dbType = "sql";
RDSFactory dbFactory = new RDSFactory();
// Testing Data Access Layer
string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
"TCPIP=1;" +
"SERVER=localhost;" +
"DATABASE=hobby;" +
"UID=root;" +
"PASSWORD=hobby;" +
"OPTION=3";
IDataSource<string> datasource = dbFactory.getDataSource(dbType, dbInfo);
// Act
// Create a file
serviceTest.CreateUserRecord(TestAcc, "Rifat", datasource);
DateTime eTime = DateTime.Now;
TimeSpan timeDiff = (eTime - sTime);
var sec = timeDiff.TotalSeconds;
// Assert
if (sec > 5)
{
output.WriteLine("Single Operation was unsuccessful");
Assert.False(true);
}
else
{
Assert.True(true);
output.WriteLine("Single Operation was successful");
}
}
[Fact]
public void BulkOperationforSixty()
{
// Arrange
DateTime sTime = DateTime.Now;
var serviceTest = new AccountService();
string dbType = "sql";
RDSFactory dbFactory = new RDSFactory();
// Testing Data Access Layer
string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
"TCPIP=1;" +
"SERVER=localhost;" +
"DATABASE=hobby;" +
"UID=root;" +
"PASSWORD=hobby;" +
"OPTION=3";
IDataSource<string> datasource = dbFactory.getDataSource(dbType, dbInfo);
// Act
// Create a file
for (int i = 0; i < 10000; i++)
{
var TestAcc = new UserAccount("newUser" + $"{i}", "4567", $"email{i}@a.com", "regular", sTime);
serviceTest.CreateUserRecord(TestAcc, "Rifat", datasource);
}
DateTime eTime = DateTime.Now;
TimeSpan timeDiff = (eTime - sTime);
var sec = timeDiff.TotalSeconds;
// Assert
if (sec > 60)
{
output.WriteLine("Bulk Operation was unsuccessful");
Assert.False(true);
}
else
{
Assert.True(true);
output.WriteLine("Bulk Operation was successful");
}
}
}
}

View File

@ -2,28 +2,10 @@
using System.Data.Odbc; using System.Data.Odbc;
using TeamHobby.HobbyProjectGenerator.Archive; using TeamHobby.HobbyProjectGenerator.Archive;
using TeamHobby.HobbyProjectGenerator.DataAccess; using TeamHobby.HobbyProjectGenerator.DataAccess;
using TeamHobby.HobbyProjectGenerator.Logging;
using TeamHobby.HobbyProjectGenerator.UserManagement; using TeamHobby.HobbyProjectGenerator.UserManagement;
namespace TeamHobby.HobbyProjectGenerator.Main namespace TeamHobby.HobbyProjectGenerator.Main
{ {
public class GetCredentials
{
public string? GetUserName()
{
Console.WriteLine("Please enter a username:");
string? userName = Console.ReadLine();
return userName;
}
public string? GetPassword()
{
Console.WriteLine("Please enter " +
"a password:");
string? userPassword = Console.ReadLine();
return userPassword;
}
public class Controller public class Controller
{ {
@ -37,102 +19,85 @@ namespace TeamHobby.HobbyProjectGenerator.Main
// Change terminal height // Change terminal height
Console.WindowHeight = 40; Console.WindowHeight = 40;
Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"));
// Creating the Factory class // Creating the Factory class
// Logger log = new Logger(); // Logger log = new Logger();
//Logger.PrintTest(); //Logger.PrintTest();
//GetCredentials credentials = new GetCredentials();
//string? username = credentials.GetUserName();
//string? password = credentials.GetPassword();
// Console customization
// Change the look of the console
Console.Title = "HobbyProjectGenerator";
// Change console text color
Console.ForegroundColor = ConsoleColor.Green;
// Change terminal height
Console.WindowHeight = 40;
//Console.WriteLine(value: $"username is {username}\npassword is {password}");
// Creating the Factory class // Loop login terminal
// Creating the Factory class bool mainMenu = true;
string dbType = "sql"; // Loop Admin login
RDSFactory dbFactory = new RDSFactory(); while (mainMenu is true)
// Testing Data Access Layer
string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
"TCPIP=1;" +
"SERVER=localhost;" +
"DATABASE=hobby;" +
"UID=root;" +
"PASSWORD=Teamhobby;" +
"OPTION=3";
IDataSource<string> datasource = factory.getDataSource(dbType, dbInfo);
"PORT=3306;";
"OPTION=3";
IDataSource<string> datasource = dbFactory.getDataSource(dbType, dbInfo);
// Create manager class from UserManagement
SystemAccountManager manager = new SystemAccountManager();
// Admin Sign in
GetCredentials credentials = new GetCredentials();
string? username = credentials.GetUserName();
string? password = credentials.GetPassword();
// Get time of login attempt
DateTime TimeStamp = DateTime.UtcNow;
// Create UserAccount class
UserAccount user = new UserAccount(username, password, TimeStamp);
Console.Write(manager.CreateUserRecord(user, datasource));
//Console.WriteLine(value: $"Welcome {username}\n");
/* string sqlQuery = "Select * from log;";
Object result = datasource.ReadData(sqlQuery);
Console.WriteLine("type of Result: " + result.GetType());
OdbcDataReader reader = null;
if (result.GetType() == typeof(OdbcDataReader))
{ {
reader = (OdbcDataReader)result;
} // Admin Sign in
// [Logname, loglevel, date, time, ...] GetCredentials credentials = new GetCredentials();
Console.WriteLine("\nPlease Enter Admin Credentials " +
"or enter 0 to exit the machine\n");
string? username = credentials.GetUserName();
//int menuExit = Convert.ToInt32(username);
// Exit Infinite Menu
if (username == "0")
{
break;
}
string? password = credentials.GetPassword();
Console.WriteLine("Reading from the database"); // Get time of login attempt
while (reader.Read()) DateTime TimeStamp = DateTime.UtcNow;
{
Console.WriteLine("Date={0} {1} {2} {3} {4} {5}", reader[0], reader[1], reader[2], reader[3], reader[4], reader[5]);
}
SqlDAO sqlDS = (SqlDAO)datasource;
Console.WriteLine("");
// Closing the connection // String for checking query return type
sqlDS.GetConnection().Close(); string dbType = "sql";
// Creating the Factory class
RDSFactory dbFactory = new RDSFactory();
// While loop to keep this running forever with UserManagement // Testing Data Access Layer
//Testing archive Manager string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
//while (true) "TCPIP=1;" +
//{ "SERVER=localhost;" +
//string currentDate = DateTime.Now.ToString("dd"); "DATABASE=hobby;" +
//string currentTime = DateTime.Now.ToString("T"); "UID=root;" +
//string activateDate = "01"; "PASSWORD=Teamhobby;" +
//string activateTime = "00:00:00 AM"; "OPTION=3";
//Console.WriteLine("Current date: {0}, Current Time: {1}", currentDate, currentTime); IDataSource<string> datasource = dbFactory.getDataSource(dbType, dbInfo);
//if (String.Equals(currentDate, activateDate) && String.Equals(currentTime, activateTime))
// While loop to keep this running forever with UserManagement
// Testing archive Manager
//while (true)
//{ //{
//ArchiveManager archive = new ArchiveManager(datasource); string currentDate = DateTime.Now.ToString("dd");
//archive.Controller(); string currentTime = DateTime.Now.ToString("T");
//Console.WriteLine("Current date: {0}, Current Time: {1}", currentDate, currentTime);
if (String.Equals(currentDate, "1") && String.Equals(currentTime, "00:00:00 AM"))
{
ArchiveManager archive = new ArchiveManager(datasource);
archive.Controller();
}
//} //}
//}
// Create manager class from UserManagement
SystemAccountManager manager = new SystemAccountManager();
// Create UserAccount class
UserAccount user = new UserAccount(username, password, TimeStamp);
// Call user object and wait for return string
string isLogin = manager.CreateUserRecord(user, datasource);
// If login is not incorrect and user is returning to login menu
if (isLogin != "Access Denied: Unauthorized\n")
{
Console.WriteLine("Returning to login...\n");
Console.WriteLine("-------------------------------------\n");
}
// If login is incorrect
else
{
Console.WriteLine("******Access Denied: Unauthorized******");
}
}
//Creating the folder Archive //Creating the folder Archive
//Console.WriteLine("Creating a new folder ..."); //Console.WriteLine("Creating a new folder ...");
@ -163,8 +128,6 @@ namespace TeamHobby.HobbyProjectGenerator.Main
//sqlDS.RemoveEntries(); //sqlDS.RemoveEntries();
// 2.Inserting Data into the database: // 2.Inserting Data into the database:
//string sqlWrite = "INSERT into log(lvname, catname, userop, logmessage) values " + //string sqlWrite = "INSERT into log(lvname, catname, userop, logmessage) values " +
// "('Info', 'View', 'Testing DAL stuffs', 'new DAL method tested');"; // "('Info', 'View', 'Testing DAL stuffs', 'new DAL method tested');";
@ -178,86 +141,9 @@ namespace TeamHobby.HobbyProjectGenerator.Main
//Console.WriteLine("Writing to the database... "); //Console.WriteLine("Writing to the database... ");
//datasource.WriteData(sqlRemove); //datasource.WriteData(sqlRemove);
//Console.WriteLine("Writing completed. "); //Console.WriteLine("Writing completed. ");
/* bool MainMenu = true;
// Set up menu loop
while (MainMenu == true)
{
// Console customization
// Change the look of the console
Console.Title = "HobbyProjectGenerator";
// Change console text color
Console.ForegroundColor = ConsoleColor.Green;
// Change terminal height
Console.WindowHeight = 40;
// Create class objects
UiPrint menu = new UiPrint();
// Print main menu
menu.InitialMenu();
// Set up try-catch for invalid inputs
try
{
// Get user choice
string initialChoice = Console.ReadLine();
// Convert to integer
int Choice = Convert.ToInt32(initialChoice);
switch (Choice)
{
case 0:
MainMenu = false;
break;
// Create a new account
case 1:
user.newUser();
break;
// Access Admin features
case 2:
// Ask for Admin login credentials
Console.WriteLine("Please enter a username:");
string AdminUser = Console.ReadLine();
Console.WriteLine("Please enter the password for" + AdminUser);
string AdminPsswrd = Console.ReadLine();
// Check if the username and password match a record within the administrators
// Show new administrator menu
int AdminNum = 0;
Console.WriteLine("Welcome" + AdminUser);
Console.WriteLine("What would you like to do?");
Console.WriteLine("1.View normal user records.");
Console.WriteLine("2.View Administrator user records.");
Console.WriteLine("3.View log files.");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
break;
default:
Console.WriteLine("Invalid choice, please enter a valid number.");
break;
};
}
// Catch invalid keys such as spamming enter
catch
{
MainMenu = false;
};*/
//}
} }
} }
}
} }

View File

@ -1,134 +0,0 @@
using System;
namespace TeamHobby.HobbyProjectGenerator.Main
{
public class MainMenu
{
/*static void Main(string[] args)
{
/* ExampleDAO z = new ExampleDAO();
z.UserData("Tomato");
Console.Read();*/
/*bool menu = true;
// Set up menu loop
while (menu == true)
{
// Console customization
// Change the look of the console
Console.Title = "HobbyProjectGenerator";
// Change console text color
Console.ForegroundColor = ConsoleColor.Green;
// Change terminal height
Console.WindowHeight = 40;
// Create intial menu
Console.WriteLine("What would you like to do?");
int num = 1;
Console.WriteLine(num + ".Create a new user account.");
num += 1;
Console.WriteLine(num + ".Acess Admin Features.");
// Set up try-catch for invalid inputs
try
{
// Get user choice
string initialChoice = Console.ReadLine();
// Convert to integer
int Choice = Convert.ToInt32(initialChoice);
switch (Choice)
{
// Create a new account
case 1:
// Get username
Console.WriteLine("Please enter a username:");
string userName = Console.ReadLine();
// Get Password
Console.WriteLine("Please enter a password:");
string userPassword = Console.ReadLine();
// Create bool value for password confirm loop
bool conPsswrd = true;
// Loop until password is confirmed
while (conPsswrd == true)
{
// Confirm Password
Console.WriteLine("Please re-enter the password:");
string checkPsswd = Console.ReadLine();
// Check if passwords match
if (userPassword == checkPsswd)
{
// Get Security question for password reset
Console.WriteLine("Please enter a security question.\n" +
"(EX: What is your favorite food?");
string SecQuest = Console.ReadLine();
// Get Security question answer
Console.WriteLine("Please enter the answer for your security question:");
String SecAnswer = Console.ReadLine();
// Call user manager method to create the new user
//int userCreateConfirm = new CreateUser(userName,userPassword,SecQuest,SecAnswer);
// Check if user creation was successful
/* if (userCreateConfirm = 1)
{
// Confirm to user that the account has been created
Console.WriteLine("Account created succesfully with the username of" + userName);
}
else
{
}*/
/* conPsswrd = false;
}
else
{
Console.WriteLine("Passwords did not match, please try again.");
}
}
break;
// Access Admin features
case 2:
// Ask for Admin login credentials
Console.WriteLine("Please enter a username:");
string AdminUser = Console.ReadLine();
Console.WriteLine("Please enter the password for" + AdminUser);
string AdminPsswrd = Console.ReadLine();
// Check if the username and password match a record within the administrators
// Show new administrator menu
int AdminNum = 0;
Console.WriteLine("Welcome" + AdminUser);
Console.WriteLine("What would you like to do?");
Console.WriteLine("1.View normal user records.");
Console.WriteLine("2.View Administrator user records.");
Console.WriteLine("3.");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
break;
default:
menu = false;
break;
};
}
// Catch invalid keys such as spamming enter
catch
{
menu = false;
};
}*/
//}
}
}

View File

@ -1,50 +0,0 @@
using Microsoft.Data.SqlClient;
using TeamHobby.HobbyProjectGenerator.Models;
namespace TeamHobby.HobbyProjectGenerator.DAL
{
public class SqlDAO
{
public IList<Credentials> GetUserData(string username)
{
// Sql server connection string, needs to be changed accordingly to connect
var connString = "server=localhost;userid=root;password=Plop20;database=users"; // Using @" " makes the string literal
// ADO.NET - ODBC
using (var conn = new SqlConnection(connString))
{
// More complex sql commands are done in this method instead
var sql = "Select * from roles";
using (var command = new SqlCommand(sql, conn))
{
// Get the results from the query
SqlDataReader r = command.ExecuteReader();
// If you wanted to get a singular value back such as a count of a certain item
//command.ExecuteScalar();
// To execute something that doesn't expect results to come back
// Use this method instead, IE. Update command
//command.ExecuteNonQuery();
// Read data from query
while (r.Read())
{
Console.WriteLine(r.ToString());
}
return null;
}
/*// this is meant for specific basic sql commands
using (var adapter = new SqlDataAdapter())
{
adapter.UpdateCommand
adapter.DeleteCommand
adapter.InsertCommand
adapter.SelectCommand
}*/
}
}
}
}

View File

@ -16,8 +16,6 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Archive\TeamHobby.HobbyProjectGenerator.Archive.csproj" /> <ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Archive\TeamHobby.HobbyProjectGenerator.Archive.csproj" />
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj" /> <ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj" />
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Logging\TeamHobby.HobbyProjectGenerator.Logging.csproj" />
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj" />
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj" /> <ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -1,26 +1,5 @@
create table users
(
UserName varchar(50) charset utf8mb3 not null,
Password varchar(50) charset utf8mb3 not null,
Role varchar(50) charset utf8mb3 not null,
IsActive int default 1 not null,
CreatedBy varchar(50) charset utf8mb3 not null,
CreatedDate datetime not null,
constraint userRole_fk foreign key (Role) references roles (Role),
constraint user_pk primary key (UserName)
);
INSERT INTO hobby.users (UserName, Password, Role, IsActive, CreatedBy, CreatedDate, Email) VALUES
('Colin ', 'Waffle', 'Admin', 1, 'Jacob', '2021-12-13 04:27:42', null),
('Danny', 'Spartan', 'Admin', 1, 'Jacob', '2021-12-13 04:29:54', null),
('Jacob', 'Teamhobby1234', 'Admin', 1, 'SystemCreator', '2021-12-13 03:25:14', null),
('Long', 'Joystick', 'regular', 1, 'Jacob', '2021-12-13 04:29:57', null),
('Rifat', 'ApproveDar', 'Admin', 1, 'Jacob', '2021-12-13 04:29:55', null);
create table roles create table roles
( (
RoleID int not null,
Role varchar(50) charset utf8mb3 not null, Role varchar(50) charset utf8mb3 not null,
CreatedBy varchar(200) charset utf8mb3 not null, CreatedBy varchar(200) charset utf8mb3 not null,
CreatedDate datetime not null, CreatedDate datetime not null,
@ -28,6 +7,31 @@ create table roles
primary key (Role) primary key (Role)
); );
create table users
(
UserName varchar(50) charset utf8mb3 not null
primary key,
Password varchar(50) charset utf8mb3 not null,
Role varchar(50) charset utf8mb3 not null,
IsActive int default 1 not null,
CreatedBy varchar(50) charset utf8mb3 not null,
CreatedDate datetime not null,
Email varchar(50) null,
constraint users_Email_uindex
unique (Email),
constraint userRole_fk
foreign key (Role) references roles (Role)
);
INSERT INTO hobby.users (UserName, Password, Role, IsActive, CreatedBy, CreatedDate, Email) VALUES
('Colin ', 'Waffle', 'Admin', 1, 'Jacob', '2021-12-13 04:27:42', null),
('Danny', 'Spartan', 'Admin', 1, 'Jacob', '2021-12-13 04:29:54', null),
('Jacob', 'Teamhobby1234', 'Admin', 1, 'SystemCreator', '2021-12-13 03:25:14', null),
('Long', 'Joystick', 'regular', 1, 'Jacob', '2021-12-13 04:29:57', null),
('Rifat', '1234', 'Admin', 1, 'Jacob', '2021-12-13 04:29:55', null);
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES
('Admin', 'Jacob', '2021-12-13 03:25:14'), ('Admin', 'Jacob', '2021-12-13 03:25:14'),
('regular', 'Colin', '2021-12-13 03:25:14'); ('regular', 'Jacob', '2021-12-13 03:25:14');

View File

@ -2,52 +2,44 @@ create database Hobby;
use hobby; use hobby;
create table roles
(
Role varchar(50) charset utf8mb3 not null,
CreatedBy varchar(200) charset utf8mb3 not null,
CreatedDate datetime not null,
constraint role_pk
primary key (Role)
);
create table users create table users
( (
UserName varchar(50) charset utf8mb3 not null UserName varchar(50) charset utf8mb3 not null
primary key, primary key,
Password varchar(50) charset utf8mb3 null, Password varchar(50) charset utf8mb3 not null,
RoleID int auto_increment, Role varchar(50) charset utf8mb3 not null,
IsActive int default 1 null, IsActive int default 1 not null,
CreatedBy varchar(50) charset utf8mb3 null, CreatedBy varchar(50) charset utf8mb3 not null,
CreatedDate datetime null, CreatedDate datetime not null,
constraint users_UserName_uindex Email varchar(50) null,
unique (UserName), constraint users_Email_uindex
constraint users_roles_RoleID_fk unique (Email),
foreign key (RoleID) references roles (RoleID) constraint userRole_fk
foreign key (Role) references roles (Role)
); );
INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Colin ', 'Waffle', 'Jacob', '2021-12-13 04:27:42');
INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Danny', 'Spartan', 'Jacob', '2021-12-13 04:29:54'); INSERT INTO hobby.users (UserName, Password, Role, IsActive, CreatedBy, CreatedDate, Email) VALUES
INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Jacob', 'Teamhobby1234', 'SystemCreator', '2021-12-13 03:25:14'); ('Colin ', 'Waffle', 'Admin', 1, 'Jacob', '2021-12-13 04:27:42', null),
INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Long', 'Joystick', 'Jacob', '2021-12-13 04:29:57'); ('Danny', 'Spartan', 'Admin', 1, 'Jacob', '2021-12-13 04:29:54', null),
INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Rifat', 'ApproveDar', 'Jacob', '2021-12-13 04:29:55'); ('Jacob', 'Teamhobby1234', 'Admin', 1, 'SystemCreator', '2021-12-13 03:25:14', null),
('Long', 'Joystick', 'regular', 1, 'Jacob', '2021-12-13 04:29:57', null),
('Rifat', '1234', 'Admin', 1, 'Jacob', '2021-12-13 04:29:55', null);
create table roles INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES
( ('Admin', 'Jacob', '2021-12-13 03:25:14'),
RoleID int auto_increment ('regular', 'Jacob', '2021-12-13 03:25:14');
primary key,
Role varchar(50) charset utf8mb3 null,
CreatedBy varchar(200) charset utf8mb3 null,
CreatedDate datetime null
);
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('Admin', 'SystemCreator', '2021-12-13 03:25:14');
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Colin', '2021-12-13 03:25:14');
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Colin', '2021-12-13 03:25:14');
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:44');
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:46');
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:47');
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:47');
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:49');
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:50');
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:51');
alter table users
add constraint users_roles_RoleID_fk
foreign key (RoleID) references roles (RoleID);
SET Global innodb_file_per_table=ON; SET Global innodb_file_per_table=ON;
-- SET GLOBAL innodb_file_format='Barracuda'; -- SET GLOBAL innodb_file_format='Barracuda';