Skip to content

Instantly share code, notes, and snippets.

@bryandh
Created October 16, 2015 20:31
Show Gist options
  • Save bryandh/07988abb795ffc39df7e to your computer and use it in GitHub Desktop.
Save bryandh/07988abb795ffc39df7e to your computer and use it in GitHub Desktop.
Simple console application interface, in this case it is used in a database setup project.
internal class Program
{
private static void Main(string[] args)
{
var welcome = @"
___ _ _ _ _ _ _ _ __
/ _ \ | | (_) (_)| | (_)| | | | / /
/ /_\ \ ___ | |_ _ __ __ _ | |_ ___ _ | |_ ___ _ __ | |/ / ___ _ _ ____ ___
| _ | / __|| __|| |\ \ / /| || __| / _ \| || __| / _ \| '_ \ | \ / _ \| | | ||_ / / _ \
| | | || (__ | |_ | | \ V / | || |_ | __/| || |_ | __/| | | || |\ \| __/| |_| | / / | __/
\_| |_/ \___| \__||_| \_/ |_| \__| \___||_| \__| \___||_| |_|\_| \_/ \___| \__,_|/___| \___|
";
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(welcome);
Console.ForegroundColor = ConsoleColor.White;
var quit = false;
while (!quit)
{
Console.WriteLine("--- Options ---");
Console.WriteLine("[1]: Drop local database (RavenDb)");
Console.WriteLine("[2]: Drop roles collection");
Console.WriteLine("[3]: Drop users collection");
Console.WriteLine("[4]: Drop groups collection");
Console.WriteLine("[5]: Drop activities collection");
Console.WriteLine("[6]: Create local database (RavenDb)");
Console.WriteLine("[7]: Create roles");
Console.WriteLine("[8]: Create users");
Console.WriteLine("[9]: Create groups");
Console.WriteLine("[0]: Create activities");
Console.WriteLine("[A]: Do everything above");
Console.WriteLine("[Q]: Quit the application");
Console.Write("Your option: ");
var option = Console.ReadKey();
Console.WriteLine("\r\n");
try {
switch (option.Key)
{
case ConsoleKey.D1:
Routines.Setup.DropDatabase();
break;
case ConsoleKey.D2:
Routines.Setup.DropRoles();
break;
case ConsoleKey.D3:
Routines.Setup.DropUsers();
break;
case ConsoleKey.D4:
Routines.Setup.DropGroups();
break;
case ConsoleKey.D5:
Routines.Setup.DropActivities();
break;
case ConsoleKey.D6:
Routines.Setup.CreateDatabase();
break;
case ConsoleKey.D7:
Routines.Setup.CreateRoles();
break;
case ConsoleKey.D8:
Routines.Setup.CreateUsers();
break;
case ConsoleKey.D9:
Routines.Setup.CreateGroups();
break;
case ConsoleKey.D0:
Routines.Setup.CreateActivities();
break;
case ConsoleKey.A:
Console.WriteLine("Doing *everything*...");
Routines.Setup.DropDatabase();
Routines.Setup.CreateDatabase();
Routines.Setup.CreateRoles();
Routines.Setup.CreateUsers();
Routines.Setup.CreateGroups();
Routines.Setup.CreateActivities();
break;
case ConsoleKey.Q:
quit = true;
break;
default:
Console.WriteLine("OK, you've chosen something else. Quitting now...");
return;
}
} catch (Exception ex) {
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Error: " + ex.Message);
}
Console.ResetColor();
}
}
}
// Example setup routine
public partial class Setup
{
public static void CreateRoles()
{
try {
Console.WriteLine("Checking for roles...");
var roleProvider = new RavenDbRoleProvider();
foreach (Role role in Enum.GetValues(typeof(Role)))
{
var roleString = role.ToString();
if (!roleProvider.RoleExists(roleString))
{
Console.WriteLine("Creating " + role + " role");
roleProvider.CreateRole(roleString);
}
}
} catch (DuplicateNameException e) {
throw new Exception("Failed to create role, duplicate name found", e);
} catch (Exception e) {
throw new Exception("Failed to create role", e);
}
Console.WriteLine("Successfully created roles");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment