AutoQuery / Ormlite-servicestack: Могу ли я отфильтровать мягкие удаления в классе QueryDb?
У нас есть несколько сервисов, созданных с помощью Ormlite/Servicestack, и мы в основном извлекаем объекты базы данных и POCO, используя QueryData
с пользовательской логикой.
Тем не менее, у нас есть одна таблица, которую на самом деле не нужно логически расширять, и она прекрасно справляется с запросом к БД напрямую из внешнего интерфейса, используя параметры AutoQuery и URL. Тем не менее, эта таблица содержит isDeleted
столбец для отслеживания мягких удалений. На внешнем интерфейсе не должно быть элементов, удаленных программным способом, и мы считаем, что внешний интерфейс не должен иметь возможность получать эти записи (т.е. не должен отвечать за запросы API с помощью ?&isDeleted=false
).
Итак, учитывая нашу текущую настройку:
[Route("/query/thing/stuff", HttpMethods.Get)]
public class secret_table: QueryDb<secret_table>
{
}
... было бы возможно реализовать фильтр для QueryDb<>
автоматически исключать записи, где isDeleted=true
? И сможет ли это быть применено только к этой таблице / классу?
Я mythz молоко и печенье в надежде, что mythz и оставит подарок... но любая помощь приветствуется, конечно!
1 ответ
Вы пытались использовать один из вариантов расширения?
Вы также должны иметь возможность использовать фильтр выбора OrmLite для включения программного удаления, например:
SqlExpression<secret_table>.SelectFilter = q => q.Where(x => x.IsDeleted != true);
Обратите внимание, что ваш AutoQuery DTO не должен повторно использовать имя таблицы в качестве имени DTO, используйте другое имя, например:
[Route("/query/thing/stuff", HttpMethods.Get)]
public class QuerySecretTable: QueryDb<secret_table> {}