using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sonex.DBWrapper
{
    public sealed class DapperTestTypesRow
    {
        public int Id { get; set; }
        public int IntCol { get; set; }
        public long BigintCol { get; set; }
        public short SmallintCol { get; set; }
        public decimal DecimalCol { get; set; }
        public float RealCol { get; set; }
        public double DoubleCol { get; set; }
        public bool BoolCol { get; set; }

        public string TextCol { get; set; } = null!;
        public string VarcharCol { get; set; } = null!;
        public string CharCol { get; set; } = null!;

        public DateOnly DateCol { get; set; }
        public TimeOnly TimeCol { get; set; }
        public DateTime TimestampCol { get; set; }              // bez TZ

        public byte[] ByteaCol { get; set; } = null!;
        public Guid UuidCol { get; set; }

        public string JsonCol { get; set; } = null!;             // JSON jako text (najszybciej)
        public string JsonbCol { get; set; } = null!;

        public decimal MoneyCol { get; set; }                    // PG money → decimal
        public TimeSpan IntervalCol { get; set; }
        public string TestTextCol01 { get; set; } = null!;
        public string TestTextCol02 { get; set; } = null!;
        public string TestTextCol03 { get; set; } = null!;
        public string TestTextCol04 { get; set; } = null!;
        public string TestTextCol05 { get; set; } = null!;
        public string TestTextCol06 { get; set; } = null!;
        public string TestTextCol07 { get; set; } = null!;
        public string TestTextCol08 { get; set; } = null!;
        public string TestTextCol09 { get; set; } = null!;
        public string TestTextCol10 { get; set; } = null!;
        public string TestTextCol11 { get; set; } = null!;
        public string TestTextCol12 { get; set; } = null!;
        public string TestTextCol13 { get; set; } = null!;
        public string TestTextCol14 { get; set; } = null!;
        public string TestTextCol15 { get; set; } = null!;
        public string TestTextCol16 { get; set; } = null!;
        public string TestTextCol17 { get; set; } = null!;
        public string TestTextCol18 { get; set; } = null!;
        public string TestTextCol19 { get; set; } = null!;
        public string TestTextCol20 { get; set; } = null!;
        public string TestTextCol21 { get; set; } = null!;
        public string TestTextCol22 { get; set; } = null!;
        public string TestTextCol23 { get; set; } = null!;
        public string TestTextCol24 { get; set; } = null!;
        public string TestTextCol25 { get; set; } = null!;
        public string TestTextCol26 { get; set; } = null!;
        public string TestTextCol27 { get; set; } = null!;
        public string TestTextCol28 { get; set; } = null!;
        public string TestTextCol29 { get; set; } = null!;
        public string TestTextCol30 { get; set; } = null!;
        public string TestTextCol31 { get; set; } = null!;
        public string TestTextCol32 { get; set; } = null!;
        public string TestTextCol33 { get; set; } = null!;
        public string TestTextCol34 { get; set; } = null!;
        public string TestTextCol35 { get; set; } = null!;
        public string TestTextCol36 { get; set; } = null!;
        public string TestTextCol37 { get; set; } = null!;
        public string TestTextCol38 { get; set; } = null!;
        public string TestTextCol39 { get; set; } = null!;
        public string TestTextCol40 { get; set; } = null!;
        public string TestTextCol41 { get; set; } = null!;
        public string TestTextCol42 { get; set; } = null!;
        public string TestTextCol43 { get; set; } = null!;
        public string TestTextCol44 { get; set; } = null!;
        public string TestTextCol45 { get; set; } = null!;
        public string TestTextCol46 { get; set; } = null!;
        public string TestTextCol47 { get; set; } = null!;
        public string TestTextCol48 { get; set; } = null!;
        public string TestTextCol49 { get; set; } = null!;
        public string TestTextCol50 { get; set; } = null!;
        public string TestTextCol51 { get; set; } = null!;
        public string TestTextCol52 { get; set; } = null!;
        public string TestTextCol53 { get; set; } = null!;
        public string TestTextCol54 { get; set; } = null!;
        public string TestTextCol55 { get; set; } = null!;
        public string TestTextCol56 { get; set; } = null!;
        public string TestTextCol57 { get; set; } = null!;
        public string TestTextCol58 { get; set; } = null!;
        public string TestTextCol59 { get; set; } = null!;
        public string TestTextCol60 { get; set; } = null!;
        public string TestTextCol61 { get; set; } = null!;
    }
    public sealed class DapperTestTypesColumns
    {
        public int[] Id = null!;
        public int[] IntCol = null!;
        public long[] BigintCol = null!;
        public short[] SmallintCol = null!;
        public decimal[] DecimalCol = null!;
        public float[] RealCol = null!;
        public double[] DoubleCol = null!;
        public bool[] BoolCol = null!;

        public string[] TextCol = null!;
        public string[] VarcharCol = null!;
        public string[] CharCol = null!;

        public DateOnly[] DateCol = null!;
        public TimeOnly[] TimeCol = null!;
        public DateTime[] TimestampCol = null!;
        public DateTimeOffset[] TimestamptzCol = null!;

        public byte[][] ByteaCol = null!;
        public Guid[] UuidCol = null!;

        public string[] JsonCol = null!;
        public string[] JsonbCol = null!;

        public decimal[] MoneyCol = null!;
        public TimeSpan[] IntervalCol = null!;

        public int RowCount;
    }

}
