Created
October 16, 2015 20:31
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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