Example #1
0
    /// <summary>
    /// Throw if the database or SqlBotDataEntities table have not been created.
    /// </summary>
    static internal void AssertDatabaseReady()
    {
        //var connectionString = Utils.GetAppSetting(AppSettingKeys.SqlServerConnectionString);
        var connectionString = ConfigurationManager.ConnectionStrings["BotDataContextConnectionString"].ConnectionString;

        using (var context = new SqlBotDataContext(connectionString))
        {
            if (!context.Database.Exists())
            {
                throw new ArgumentException("The sql database defined in the connection has not been created. See https://github.com/Microsoft/BotBuilder-Azure/tree/master/CSharp");
            }

            if (context.Database.SqlQuery <int>(@"IF EXISTS (SELECT * FROM sys.tables WHERE name = 'SqlBotDataEntities') 
                                                                    SELECT 1
                                                                ELSE
                                                                    SELECT 0").SingleOrDefault() != 1)
            {
                throw new ArgumentException("The SqlBotDataEntities table has not been created in the database. See https://github.com/Microsoft/BotBuilder-Azure/tree/master/CSharp");
            }
        }
    }
Example #2
0
    internal static async Task <SqlBotDataEntity> GetSqlBotDataEntity(IAddress key, BotStoreType botStoreType, SqlBotDataContext context)
    {
        SqlBotDataEntity entity = null;
        var query = context.BotData.OrderByDescending(d => d.Timestamp);

        switch (botStoreType)
        {
        case BotStoreType.BotConversationData:
            entity = await query.FirstOrDefaultAsync(d => d.BotStoreType == botStoreType &&
                                                     d.ChannelId == key.ChannelId &&
                                                     d.ConversationId == key.ConversationId);

            break;

        case BotStoreType.BotUserData:
            entity = await query.FirstOrDefaultAsync(d => d.BotStoreType == botStoreType &&
                                                     d.ChannelId == key.ChannelId &&
                                                     d.UserId == key.UserId);

            break;

        case BotStoreType.BotPrivateConversationData:
            entity = await query.FirstOrDefaultAsync(d => d.BotStoreType == botStoreType &&
                                                     d.ChannelId == key.ChannelId &&
                                                     d.ConversationId == key.ConversationId &&
                                                     d.UserId == key.UserId);

            break;

        default:
            throw new ArgumentException("Unsupported bot store type!");
        }

        return(entity);
    }