Esempio n. 1
0
        public static void SchemaMgrAddColumnShouldSuccess()
        {
            string              tableName = "tableOne";
            SchemaManager       mgr       = new SchemaManager();
            SchemaDefinition    s         = mgr.SetSchema("test");
            SchemaManagerResult r         = mgr.AddTable(tableName);

            r = mgr.AddColumn(tableName, new Column("ColumnOne", DataTypes.ULong, false));
            Expect.IsTrue(r.Success);
        }
Esempio n. 2
0
        public static void SchemaMgrAddTableShouldSuccess()
        {
            SchemaManager       mgr = new SchemaManager();
            SchemaDefinition    s   = mgr.SetSchema("test");
            SchemaManagerResult r   = mgr.AddTable("tableOne");

            Expect.IsTrue(r.Success);

            TryDeleteSchema(s);
        }
Esempio n. 3
0
        public static void AddForeignKeyShouldFailIfColumnNotDefined()
        {
            SchemaManager    mgr = new SchemaManager();
            SchemaDefinition s   = mgr.SetSchema("test");

            mgr.AddTable("TableOne");
            mgr.AddTable("ReferringTable");
            SchemaManagerResult r = mgr.SetForeignKey("TableOne", "ReferringTable", "TableOneID");

            Expect.IsFalse(r.Success);
            OutLine(r.Message, ConsoleColor.Yellow);

            TryDeleteSchema(s);
        }
Esempio n. 4
0
        private static SchemaManager GetTestSchemaManager()
        {
            SchemaManager mgr = new SchemaManager();

            mgr.AddTable("Person");
            mgr.AddColumn("Person", "Id", DataTypes.ULong);
            mgr.AddColumn("Person", "Name", DataTypes.String);
            mgr.AddTable("Employee");
            mgr.AddColumn("Employee", "Id", DataTypes.ULong);
            mgr.AddColumn("Employee", "Salary", DataTypes.Decimal);
            SchemaManagerResult managerResult = mgr.SetForeignKey("Person", "Employee", "Id", "Id");

            Expect.IsTrue(managerResult.Success, $"Message: {managerResult.Message}\r\nException: {managerResult.ExceptionMessage}");
            return(mgr);
        }
Esempio n. 5
0
		private static void WriteSqlFile(SchemaManagerResult managerResult)
		{
			if (managerResult.DaoAssembly == null)
			{
                Message.PrintLine("Unable to locate Dao assembly for sql schema generation, specify dll argument", ConsoleColor.Red);
			}
			else
			{
				FileInfo sqlFile = new FileInfo(Arguments["sql"]);
				SqlDialect dialect = SqlDialect.MsSql;
				if (Arguments.Contains("dialect"))
				{
					dialect = (SqlDialect)Enum.Parse(typeof(SqlDialect), Arguments["dialect"]);
				}
				WriteSqlFile(managerResult.DaoAssembly, sqlFile, dialect);
                Message.PrintLine("Sql script written: {0}", sqlFile.FullName);
			}
		}
Esempio n. 6
0
        public static void GenerateDaoFromDbJs()
        {
            if (Arguments.Contains("root"))
            {
                DirectoryInfo rootDirectory = new DirectoryInfo(Arguments["root"]);
                if (!rootDirectory.Exists)
                {
                    Message.PrintLine("Specified root directory does not exist: {0}", ConsoleColor.Red, rootDirectory.FullName);
                    Environment.Exit(1);
                }

                FileInfo[] dbjs = rootDirectory.GetFiles("*.db.js", SearchOption.AllDirectories);
                if (dbjs.Length > 0)
                {
                    if (dbjs.Length > 1)
                    {
                        Message.PrintLine("Multiple *.db.js files found", ConsoleColor.Red);
                        if (!Arguments.Contains("s"))
                        {
                            Message.PrintLine("{0}", ConsoleColor.Yellow, dbjs.ToDelimited<FileInfo>(f => f.FullName, "\r\n"));
                            string answer = Prompt("Process each? [y N]", ConsoleColor.Yellow);
                            if (!answer.ToLowerInvariant().Equals("y"))
                            {
                                Exit(1);
                            }
                        }
                        else
                        {
                            Message.PrintLine("Processing each: {0}", ConsoleColor.Yellow,
                                dbjs.ToDelimited<FileInfo>(f => f.FullName, "\r\n\t"));
                        }
                    }

                    foreach (FileInfo file in dbjs)
                    {
                        try
                        {
                            Message.PrintLine("Processing {0}...", ConsoleColor.Yellow, file.FullName);
                            CuidSchemaManager manager = new CuidSchemaManager();

                            DirectoryInfo fileParent = file.Directory;
                            DirectoryInfo genToDir = GetTargetDirectory(file);

                            bool keep = Arguments.Contains("keep");

                            DirectoryInfo partialsDir = GetPartialsDir(genToDir);

                            SchemaManagerResult managerResult = null;
                            if (!Arguments.Contains("dll"))
                            {
                                bool compile = !keep;
                                managerResult = manager.GenerateDaoAssembly(file, compile, keep, genToDir.FullName,
                                    partialsDir.FullName);
                            }
                            else
                            {
                                managerResult = manager.GenerateDaoAssembly(file, new DirectoryInfo(Arguments["dll"]), keep,
                                    genToDir.FullName, partialsDir.FullName);
                            }

                            if (!managerResult.Success)
                            {
                                throw new Exception(managerResult.Message);
                            }

                            if (Arguments.Contains("sql"))
                            {
                                WriteSqlFile(managerResult);
                            }

                            Message.PrintLine(managerResult.Message, ConsoleColor.Green);
                            if (managerResult.DaoAssembly != null)
                            {
                                Message.PrintLine("Compiled to: {0}", managerResult.DaoAssembly.FullName, ConsoleColor.Yellow);
                            }
                        }
                        catch (Exception ex)
                        {
                            Message.PrintLine("{0}\r\n\r\n***\r\n{1}", ConsoleColor.Red, ex.Message, ex.StackTrace ?? "");
                            Pause("Press enter to exit\r\n");
                            Exit(1);
                        }
                    }

                    Pause("Press enter to exit...\r\n");
                }
                else
                {
                    Message.PrintLine("No *.db.js files were found", ConsoleColor.Yellow);
                }
            }
            else
            {
                if (string.IsNullOrEmpty(Arguments["conn"]))
                {
                    Message.PrintLine("Please specify a connection name from the config or a directory to search",
                        ConsoleColor.Yellow);
                    Exit(1);
                }
                else
                {
                    Extract();
                }
            }
        }