//------------------------------------------------------------------------------
// <autogenerated>
//     This code was generated by a code generation tool.
//     Date generated: 14/05/2018 17:05:24
//
//     Changes to this file may cause incorrect behavior and will be lost if 
//     the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------
using ConanData.Database;
using ConanData.Datasets;
using System;
using System.Data;
using System.Data.Common;
using System.Data.OleDb;
using System.Text;

namespace ConanData.DataAccess.Base
{
    /// <summary>
    /// Data access class to perform Fetches, Deletes, Inserts and Updates 
    /// on table guilds
    /// </summary>
    internal class GuildsDataAccessBase
    {
        #region Constants

        internal const String SCHEMA__NAME = "";
        internal const String TABLE__NAME = "guilds";

        internal const String COLUMN__GUILDID = "guildId";
        internal const String COLUMN__NAME = "name";
        internal const String COLUMN__MESSAGEOFTHEDAY = "messageOfTheDay";
        internal const String COLUMN__OWNER = "owner";
        internal const String COLUMN__NAMELASTCHANGEDBY = "nameLastChangedBy";
        internal const String COLUMN__MOTDLASTCHANGEDBY = "motdLastChangedBy";

        #endregion

        private Connection _connection = null;

        public GuildsDataAccessBase(Connection connection)
        {
            _connection = connection;
        }

        #region Properties

        public Connection Connection => _connection;

        #endregion

        #region Fetch Typed DataSets

        /// <summary>
        /// Fetches all the records into a typed dataset from the 
        /// table guilds
        /// </summary>
        /// <returns>A populated typed dataset</returns>
        public GuildsDataSet FetchDataSetAll()
        {
            Connection connection = Connection;

            StringBuilder sql = new StringBuilder();
            sql.Append(GetSelect());

            GuildsDataSet dataSet = new GuildsDataSet();
            connection.FillDataSet(sql.ToString(), null, CommandType.Text, 300, dataSet, new String[] { TABLE__NAME });
            return dataSet;
        }

        #endregion

        #region Fetch DataTables

        /// <summary>
        /// Fetches all the records into an untyped datatable from the 
        /// table guilds
        /// </summary>
        /// <returns>A populated untyped datatable</returns>
        public DataTable FetchDataTableAll()
        {
            Connection connection = Connection;

            StringBuilder sql = new StringBuilder();
            sql.Append(GetSelect());

            return connection.ExecuteDataTable(sql.ToString(), null, CommandType.Text, 300, TABLE__NAME);
        }

        #endregion

        #region Support Methods

        protected String GetSelect()
        {
            StringBuilder sql = new StringBuilder();
            sql.AppendFormat("SELECT [{0}].[{1}] AS [GuildId],", TABLE__NAME, COLUMN__GUILDID);
            sql.AppendFormat("[{0}].[{1}] AS [Name],", TABLE__NAME, COLUMN__NAME);
            sql.AppendFormat("[{0}].[{1}] AS [MessageOfTheDay],", TABLE__NAME, COLUMN__MESSAGEOFTHEDAY);
            sql.AppendFormat("[{0}].[{1}] AS [OwnerId],", TABLE__NAME, COLUMN__OWNER);
            sql.AppendFormat("[{0}].[{1}] AS [NameLastChangedBy],", TABLE__NAME, COLUMN__NAMELASTCHANGEDBY);
            sql.AppendFormat("[{0}].[{1}] AS [MotdLastChangedBy] ", TABLE__NAME, COLUMN__MOTDLASTCHANGEDBY);
            sql.AppendFormat("FROM {0}[{1}] ", SCHEMA__NAME, TABLE__NAME);
            return sql.ToString();
        }

        #endregion
    }
}
