コード例 #1
0
        private void CreateGameweek(DateTime date)
        {
            var start = date.Date;
            var end   = start.AddDays(1).Subtract(new TimeSpan(TimeSpan.TicksPerSecond));

            _connection.Execute(mergeSql, new { start, end });
        }
コード例 #2
0
 public void Save(Fixture fixture)
 {
     _connection.Execute(saveFixture, fixture);
     _connection.Execute(saveCompetition, new { fixture.CompetitionId, fixture.Competition.BookieId });
     _connection.Execute(saveTeam, new { fixture.HomeTeam.Id, fixture.HomeTeam.Name, fixture.HomeTeam.BookieName });
     _connection.Execute(saveTeam, new { fixture.AwayTeam.Id, fixture.AwayTeam.Name, fixture.AwayTeam.BookieName });
 }
コード例 #3
0
        private static string SaveTransactionPoint(this IDatabaseConnection This)
        {
            var savePoint = $"S{_rand.Value.Next(short.MaxValue)}";

            This.Execute(SQLBuilder.SavePoint(savePoint));
            return(savePoint);
        }
コード例 #4
0
        protected void AddColumn(IDatabaseConnection connection, string table, string columnName, string type, List <string> existingColumnNames)
        {
            if (existingColumnNames.Contains(columnName, StringComparer.OrdinalIgnoreCase))
            {
                return;
            }

            connection.Execute("alter table " + table + " add column " + columnName + " " + type + " NULL");
        }
コード例 #5
0
        private void CreateTriggers(Type ty, IDatabaseConnection connection)
        {
            try
            {
                var map = manager.GetMapping(ty);

                // Create the 3 triggers on table
                // Insert Trigger
                // Update Trigger
                // Delete Trigger

                var    lstNewClauses = map.PrimaryKeys.Select(primaryKey => " new." + primaryKey.Name).ToList();
                string pkeysNames    = String.Join(", ", map.PrimaryKeys.Select(column => column.Name));
                string pkeysNewNames = String.Join(", ", lstNewClauses);

                var declWhere =
                    map.PrimaryKeys.Select(primaryKey => String.Format("\"{0}\" = old.\"{0}\" ", primaryKey.Name))
                    .ToList();
                string updateOrWherePkeysName = String.Join(" and ", declWhere);

                String triggerInsertQuery =
                    String.Format(SQLiteConstants.CreateTriggerAfterInsert,
                                  map.TableName, pkeysNames, pkeysNewNames);
                connection.Execute(triggerInsertQuery);


                String triggerUpdateQuery =
                    String.Format(SQLiteConstants.CreateTriggerAfterUpdate,
                                  map.TableName, updateOrWherePkeysName);

                connection.Execute(triggerUpdateQuery);

                String triggerDeleteQuery =
                    String.Format(SQLiteConstants.CreateTriggerAfterDelete,
                                  map.TableName, updateOrWherePkeysName);

                connection.Execute(triggerDeleteQuery);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                throw;
            }
        }
コード例 #6
0
        public void Save(Standing standing)
        {
            var team = _teamDb.RetrieveBySourceId(standing.SourceTeamId).Result;

            standing.TeamId = team.Id;
            var competition = _competitionDb.RetrieveBySourceId(standing.SourceCompetitionId).Result;

            standing.CompetitionId = competition.Id;
            _connection.Execute(mergeSql, standing);
        }
コード例 #7
0
        private void DisableTriggers(TableMapping map, IDatabaseConnection connection)
        {
            try
            {
                String triggerDeleteQuery = String.Format(SQLiteConstants.DeleteTriggerAfterDelete, map.TableName);
                String triggerInsertQuery = String.Format(SQLiteConstants.DeleteTriggerAfterInsert, map.TableName);
                String triggerUpdateQuery = String.Format(SQLiteConstants.DeleteTriggerAfterUpdate, map.TableName);

                connection.Execute(triggerDeleteQuery);
                connection.Execute(triggerInsertQuery);
                connection.Execute(triggerUpdateQuery);

                //await connection.ExecuteStatementAsync(triggerDeleteQuery).AsTask().ConfigureAwait(false);
                //await connection.ExecuteStatementAsync(triggerInsertQuery).AsTask().ConfigureAwait(false);
                //await connection.ExecuteStatementAsync(triggerUpdateQuery).AsTask().ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                throw;
            }
        }
コード例 #8
0
        private static void MigrateTable(this IDatabaseConnection This, TableMapping tableMapping)
        {
            var existingCols = This.GetTableInfo(tableMapping.TableName);

            var toBeAdded = new List <KeyValuePair <string, ColumnMapping> > ();

            foreach (var p in tableMapping.Columns)
            {
                if (!existingCols.ContainsKey(p.Key))
                {
                    toBeAdded.Add(p);
                }
            }

            foreach (var p in toBeAdded)
            {
                This.Execute(SQLBuilder.AlterTableAddColumn(tableMapping.TableName, p.Key, p.Value));
            }
        }
コード例 #9
0
 public void Save(Competition competition)
 {
     _connection.Execute(mergeSql, competition);
 }
コード例 #10
0
 internal static void CreateIndex(this IDatabaseConnection This, string indexName, string tableName, IEnumerable <string> columnNames, bool unique)
 {
     This.Execute(SQLBuilder.CreateIndex(indexName, tableName, columnNames, unique));
 }
コード例 #11
0
        /*
         * /// <summary>
         * ///  Returns metadata about a specific column of a specific database table,
         * /// </summary>
         * /// <param name="This">The database connection.</param>
         * /// <param name="columnInfo">The ColumnInfo of the column whose metadata should be retrieved.</param>
         * /// <returns>The metadata of the column specified by columnInfo.</returns>
         * public static TableColumnMetadata GetTableColumnMetadata(this IDatabaseConnection This, ColumnInfo columnInfo)
         * {
         *  Contract.Requires(This != null);
         *  Contract.Requires(columnInfo != null);
         *
         *  return This.GetTableColumnMetadata(columnInfo.DatabaseName, columnInfo.TableName, columnInfo.OriginName);
         * }*/

        /// <summary>
        /// Executes the SQLite VACUUM command
        /// </summary>
        /// <param name="This">The database connection.</param>
        /// <seealso href="https://www.sqlite.org/lang_vacuum.html"/>
        public static void Vacuum(this IDatabaseConnection This) =>
        This.Execute(SQLBuilder.Vacuum);
コード例 #12
0
 private static void RollbackTransaction(this IDatabaseConnection This) =>
 This.Execute(SQLBuilder.RollbackTransaction);
コード例 #13
0
 private static void RollbackTransactionTo(this IDatabaseConnection This, string savepoint) =>
 This.Execute(SQLBuilder.RollbackTransactionTo(savepoint));
コード例 #14
0
 /// <inheritdoc/>
 protected override void ApplyCore(IDatabaseConnection connection) =>
 connection.Execute(createVersionTableSql);
        /// <summary>
        /// Deletes all rows in a given table.
        /// </summary>
        /// <param name="This">The database connection.</param>
        /// <typeparam name="T">The mapped type.</typeparam>
        public static void DeleteAllRows <T>(this IDatabaseConnection This)
        {
            var tableMapping = TableMapping.Get <T>();

            This.Execute(SQLBuilder.DeleteAll(tableMapping.TableName));
        }
コード例 #16
0
        private static void BeginTransaction(this IDatabaseConnection This, TransactionMode mode)
        {
            var beginTransactionString = SQLBuilder.BeginTransactionWithMode(mode);

            This.Execute(beginTransactionString);
        }
コード例 #17
0
        internal static void CreateTableIfNotExists(this IDatabaseConnection conn, string tableName, CreateFlags createFlags, IReadOnlyDictionary <string, ColumnMapping> columns)
        {
            var query = SQLBuilder.CreateTableIfNotExists(tableName, createFlags, columns);

            conn.Execute(query);
        }
コード例 #18
0
 public void Save(MatchOdds odds)
 {
     _connection.Execute(mergesql, odds);
 }
コード例 #19
0
 public void Save(Team team)
 {
     _connection.Execute(mergeSql, team);
 }
        /// <summary>
        /// Drops the table if it exists. Otherwise this is a no-op.
        /// </summary>
        /// <param name="This">The database connection.</param>
        /// <typeparam name="T">The mapped type.</typeparam>
        /// <seealso href="https://www.sqlite.org/lang_droptable.html"/>
        public static void DropTableIfExists <T>(this IDatabaseConnection This)
        {
            var tableMapping = TableMapping.Get <T>();

            This.Execute(SQLBuilder.DropTableIfExists(tableMapping.TableName));
        }
コード例 #21
0
 private static void ReleaseTransaction(this IDatabaseConnection This, string savepoint) =>
 This.Execute(SQLBuilder.Release(savepoint));
コード例 #22
0
 private static void CommitTransaction(this IDatabaseConnection This) =>
 This.Execute(SQLBuilder.CommitTransaction);
コード例 #23
0
 public void Save(Region region)
 {
     _connection.Execute(mergeSql, region);
 }