using FreeSql.DataAnnotations;
using System;
using Xunit;

namespace FreeSql.Tests.Sqlite
{
    public class SqliteAdoTest
    {
        [Fact]
        public void Pool()
        {
            var t1 = g.sqlite.Ado.MasterPool.StatisticsFullily;
        }

        [Fact]
        public void SlavePools()
        {
            var t2 = g.sqlite.Ado.SlavePools.Count;
        }
        [Fact]
        public void ExecuteReader()
        {

        }
        [Fact]
        public void ExecuteArray()
        {

        }
        [Fact]
        public void ExecuteNonQuery()
        {

        }
        [Fact]
        public void ExecuteScalar()
        {

        }

        [Fact]
        public void Query()
        {

            var t0 = g.sqlite.Ado.Query<testallDto>("select * from \"song\"");

            var t1 = g.sqlite.Ado.Query<testallDto>("select id, url, create_time from \"song\"");

            var t2 = g.sqlite.Ado.Query<testallDto>("select id, url, create_time test_time from \"song\"");

            var t3 = g.sqlite.Ado.Query<xxx>("select * from \"song\"");

            var t4 = g.sqlite.Ado.Query<(int, string, string)>("select * from \"song\"");

            var t5 = g.sqlite.Ado.Query<dynamic>("select * from \"song\"");
        }

        [Fact]
        public void QueryMultipline()
        {
            var t3 = g.sqlite.Ado.Query<xxx, (int, string, string), dynamic>("select * from song; select * from song; select * from song");
        }

        class xxx
        {
            public int Id { get; set; }
            public string Path { get; set; }
            public string Title2 { get; set; }
        }

        class testallDto
        {
            public int Id { get; set; }
            public string Title { get; set; }
            public string Url { get; set; }
            public DateTime Test_time { get; set; }
            public DateTime Create_time { get; set; }
            public bool Is_deleted { get; set; }
        }
    }
}
