예제 #1
0
            private async Task <string> GetCalculatedPropertyAsync(string name)
            {
                string sql = null;

                if (name == "CommentsUnapproved")
                {
                    using (DataProvider.BlogCommentDataProvider commentDP = new DataProvider.BlogCommentDataProvider(-1)) {// we don't know the entry, but it's not needed
                        sql = "SELECT COUNT(*) FROM $BlogComments$ WHERE ($BlogComments$.\"EntryIdentity\" = $ThisTable$.\"Identity\") AND ($ThisTable$.\"Published\" = True) AND ($BlogComments$.\"Deleted\" = False) AND ($BlogComments$.\"Approved\" = False)";
                        IPostgreSQLTableInfo info = await commentDP.GetDataProvider().GetIPostgreSQLTableInfoAsync();

                        sql = info.ReplaceWithTableName(sql, "$BlogComments$");
                        sql = ReplaceWithTableName(sql, "$ThisTable$");
                    }
                }
                else if (name == "Comments")
                {
                    using (DataProvider.BlogCommentDataProvider commentDP = new DataProvider.BlogCommentDataProvider(-1)) {// we don't know the entry, but it's not needed
                        sql = "SELECT COUNT(*) FROM $BlogComments$ WHERE ($BlogComments$.\"EntryIdentity\" = $ThisTable$.\"Identity\") AND ($ThisTable$.\"Published\" = True)";
                        IPostgreSQLTableInfo info = await commentDP.GetDataProvider().GetIPostgreSQLTableInfoAsync();

                        sql = info.ReplaceWithTableName(sql, "$BlogComments$");
                        sql = ReplaceWithTableName(sql, "$ThisTable$");
                    }
                }
                else
                {
                    throw new InternalError("Unexpected property {0}", name);
                }
                return(sql);
            }
            public async Task RemoveUnusedUrlsAsync(DataProvider.SearchDataProvider searchDP)  //$$$$
            {
                using (DataProvider.SearchDataUrlDataProvider searchUrlDP = new DataProvider.SearchDataUrlDataProvider()) {
                    string sql = @"
DELETE FROM {UrlTableName} USING {TableName}
WHERE {UrlTableName}.""SearchDataUrlId"" = {TableName}.""SearchDataUrlId""
        AND {TableName}.""SearchDataUrlId"" IS NULL";
                    IPostgreSQLTableInfo info = await searchUrlDP.GetDataProvider().GetIPostgreSQLTableInfoAsync();

                    sql = sql.Replace("{UrlTableName}", SQLBuilder.WrapIdentifier(info.GetTableName()));
                    await Direct_QueryAsync(sql);
                }
            }