Esempio n. 1
0
        public string Execute(string xmlstring)
        {
            XmlToSqlResult xmlToSqlResult = _sqlBuilder.Build(xmlstring);

            if (xmlToSqlResult.Success)
            {
                switch (xmlToSqlResult.Type)
                {
                case SqlStatementTypeEnum.SELECT:
                    List <Dictionary <string, object> > selectResult = _dataRepository.Select(xmlToSqlResult.Statement);
                    return(ConvertToXMLResult(StatusEnum.SUCCESS, JsonConvert.SerializeObject(selectResult, Formatting.Indented)));

                case SqlStatementTypeEnum.DELETE:
                case SqlStatementTypeEnum.UPDATE:
                case SqlStatementTypeEnum.INSERT:
                    return(_dataRepository.ExecuteNoneQuery(xmlToSqlResult.Statement)
                                                                        ? ConvertToXMLResult(StatusEnum.SUCCESS, $"Operation '{xmlToSqlResult.Type}' success!")
                                                                        : ConvertToXMLResult(StatusEnum.REJECTED, $"Operation '{xmlToSqlResult.Type}' rejected!"));

                default:
                    return(ConvertToXMLResult(StatusEnum.REJECTED, $"Operation '{xmlToSqlResult.Type}' rejected!"));
                }
            }
            else
            {
                return(ConvertToXMLResult(StatusEnum.BAD_FORMAT, $"Error: ${xmlToSqlResult.ErrorMessage}"));
            }
        }
Esempio n. 2
0
        public void BuildWithUnknownOperation()
        {
            string SELECT_ALL_WITH_QUERY_AND_NAME_AND_CONNECTED_TO_AND_CONNECTED_TYPE = @"
				<Resource>
					<Verb>GET_TEST</Verb>
					<Noun>/RESOURCE/1</Noun>
					<Query>name='Alek';type=1</Query>
					<Fields>id;name;description</Fields>
					<ConnectedTo>id=1;id=4</ConnectedTo>
					<ConnectedType>id=7;id=8</ConnectedType>
				</Resource>
			"            ;

            XmlToSqlResult result = sqlBuilder.Build(SELECT_ALL_WITH_QUERY_AND_NAME_AND_CONNECTED_TO_AND_CONNECTED_TYPE);

            Assert.False(result.Success);
        }
Esempio n. 3
0
        public void BuildSelectWithAllParameters()
        {
            string SELECT_ALL_WITH_QUERY_AND_NAME_AND_CONNECTED_TO_AND_CONNECTED_TYPE = @"
				<Resource>
					<Verb>GET</Verb>
					<Noun>/RESOURCE/1</Noun>
					<Query>name='Alek';type=1</Query>
					<Fields>id;name;description</Fields>
					<ConnectedTo>id=1;id=4</ConnectedTo>
					<ConnectedType>id=7;id=8</ConnectedType>
				</Resource>
			"            ;

            XmlToSqlResult result = sqlBuilder.Build(SELECT_ALL_WITH_QUERY_AND_NAME_AND_CONNECTED_TO_AND_CONNECTED_TYPE);

            Assert.True(result.Success);
            Assert.AreEqual("SELECT x.id, x.name, x.description FROM resources x JOIN Relations ON FirstResource_Id = x.Id WHERE x.Id=1 AND x.name='Alek' AND x.type=1 AND FirstResource_Id = 1 AND Secondresource_Id = 4 AND TYPE_Id IN( AND FirstResource_Id = 7 AND Secondresource_Id = 8)", result.Statement);
        }
Esempio n. 4
0
        public void BuildSelectAllWithConnectedTo()
        {
            string SELECT_ALL_WITH_CONNECTED_TO = @"
				<Resource>
					<Verb>GET</Verb>
					<Noun>/RESOURCE</Noun>
					<Query></Query>
					<Fields></Fields>
					<ConnectedTo>id=1;id=4</ConnectedTo>
					<ConnectedType></ConnectedType>
				</Resource>
			"            ;

            XmlToSqlResult result = sqlBuilder.Build(SELECT_ALL_WITH_CONNECTED_TO);

            Assert.True(result.Success);
            Assert.AreEqual("SELECT x.* FROM resources x  JOIN Relations ON FirstResource_Id = x.Id  WHERE FirstResource_Id IN(1,4)", result.Statement);
        }
Esempio n. 5
0
        public void BuildSelectAllWithQueryAndName()
        {
            string SELECT_ALL_WITH_QUERY_AND_NAME = @"
				<Resource>
					<Verb>GET</Verb>
					<Noun>/RESOURCE/1</Noun>
					<Query>name='Alek';type=1</Query>
					<Fields>id;name;description</Fields>
					<ConnectedTo></ConnectedTo>
					<ConnectedType></ConnectedType>
				</Resource>
			"            ;

            XmlToSqlResult result = sqlBuilder.Build(SELECT_ALL_WITH_QUERY_AND_NAME);

            Assert.True(result.Success);
            Assert.AreEqual("SELECT x.id, x.name, x.description FROM resources x WHERE x.Id=1 AND x.name='Alek' AND x.type=1", result.Statement);
        }
Esempio n. 6
0
        public void BuildSelectById()
        {
            string SELECT_BY_ID = @"
				<Resource>
					<Verb>GET</Verb>
					<Noun>/RESOURCE/1</Noun>
					<Query></Query>
					<Fields></Fields>
					<ConnectedTo></ConnectedTo>
					<ConnectedType></ConnectedType>
				</Resource>
			"            ;

            XmlToSqlResult result = sqlBuilder.Build(SELECT_BY_ID);

            Assert.True(result.Success);
            Assert.AreEqual("SELECT x.* FROM resources x WHERE x.Id=1", result.Statement);
        }
Esempio n. 7
0
        public void BuildDelete()
        {
            string DELETE = @"
				<Resource>
					<Verb>DELETE</Verb>
					<Noun>/RESOURCE/1</Noun>
					<Query>name='Alek';type=1</Query>
					<Fields></Fields>
					<ConnectedTo></ConnectedTo>
					<ConnectedType></ConnectedType>
				</Resource>
			"            ;

            XmlToSqlResult result = sqlBuilder.Build(DELETE);

            Assert.True(result.Success);
            Assert.AreEqual("DELETE FROM resources WHERE Id=1 AND name='Alek' AND type=1", result.Statement);
        }
Esempio n. 8
0
        public void BuildInsert()
        {
            string POST = @"
				<Resource>
					<Verb>POST</Verb>
					<Noun>/RESOURCE</Noun>
					<Query>name='Alek';type=1</Query>
					<Fields></Fields>
					<ConnectedTo></ConnectedTo>
					<ConnectedType></ConnectedType>
				</Resource>
			"            ;

            XmlToSqlResult result = sqlBuilder.Build(POST);

            Assert.True(result.Success);

            Assert.AreEqual("INSERT INTO resources (name, type) VALUES ('Alek', 1)", result.Statement);
        }
Esempio n. 9
0
        public void BuildUpdate()
        {
            string PATCH = @"
				<Resource>
					<Verb>PATCH</Verb>
					<Noun>/RESOURCE/1</Noun>
					<Query>name='Alek';type=1</Query>
					<Fields></Fields>
					<ConnectedTo></ConnectedTo>
					<ConnectedType></ConnectedType>
				</Resource>
			"            ;

            XmlToSqlResult result = sqlBuilder.Build(PATCH);

            Assert.True(result.Success);

            Assert.AreEqual("UPDATE resources SET name='Alek',type=1 WHERE Id=1", result.Statement);
        }