public async Task Parse() { IDatabase database = new Butterfly.Core.Database.Memory.MemoryDatabase(); await database.CreateFromResourceFileAsync(Assembly.GetExecutingAssembly(), "Butterfly.Core.Test.db.sql"); var tableRefs = StatementFromRef.ParseFromRefs(database, "employee_contact ec INNER JOIN employee e ON ec.employee_id=e.id AND 1=2 left JOIN department d on e.department_id=d.id and 1=2"); Assert.AreEqual(3, tableRefs.Length); Assert.AreEqual(tableRefs[0].table.Name, "employee_contact"); Assert.AreEqual(tableRefs[0].tableAlias, "ec"); Assert.AreEqual(tableRefs[1].table.Name, "employee"); Assert.AreEqual(tableRefs[1].tableAlias, "e"); Assert.AreEqual(tableRefs[2].table.Name, "department"); Assert.AreEqual(tableRefs[2].tableAlias, "d"); var selectStatement = new SelectStatement(database, "SELECT * FROM employee_contact WHERE contact_id=@contactId ORDER BY seq"); Assert.AreEqual("*", selectStatement.selectClause); Assert.AreEqual("employee_contact", selectStatement.fromClause); Assert.AreEqual("contact_id=@contactId", selectStatement.whereClause); Assert.AreEqual("seq", selectStatement.orderByClause); var selectStatement2 = new SelectStatement(database, @"SELECT ec.id FROM employee_contact ec INNER JOIN employee e ON ec.employee_id=e.id WHERE contact_id=@contactId ORDER BY seq"); Assert.AreEqual("ec.id", selectStatement2.selectClause); }
public bool TryGetDynamicStatementFromRef(string tableName, out StatementFromRef dynamicStatementFromRef) => this.dynamicStatementFromRefByTableName.TryGetValue(tableName, out dynamicStatementFromRef);