@Override
 public List<NewsSource> getAllNewsSources(int userId) {
   return dsl.select(
           count(SUBSCRIPTIONS.NEWS_SOURCE_ID),
           NEWS_SOURCES.ID,
           NEWS_SOURCES.NAME,
           NEWS_SOURCES.RECIPE_FILE,
           NEWS_SOURCES.DESCRIPTION,
           NEWS_SOURCES.LANGUAGE,
           NEWS_SOURCES.CONTENT_DAYS,
           NEWS_SOURCES.CATEGORY_1)
       .from(
           NEWS_SOURCES
               .leftOuterJoin(SUBSCRIPTIONS)
               .on(
                   NEWS_SOURCES
                       .ID
                       .eq(SUBSCRIPTIONS.NEWS_SOURCE_ID)
                       .and(SUBSCRIPTIONS.USER_ID.eq(userId))))
       .groupBy(NEWS_SOURCES.ID)
       .fetch()
       .map(
           record -> {
             return new NewsSource(
                 record.getValue(NEWS_SOURCES.ID),
                 record.getValue(NEWS_SOURCES.NAME),
                 record.getValue(NEWS_SOURCES.RECIPE_FILE),
                 record.getValue(NEWS_SOURCES.CATEGORY_1),
                 record.getValue(NEWS_SOURCES.LANGUAGE),
                 record.getValue(NEWS_SOURCES.DESCRIPTION),
                 record.getValue(NEWS_SOURCES.CONTENT_DAYS),
                 record.getValue(0, Integer.class) != 0);
           });
 }
 @Override
 public List<MailTask> getMailTasksForToday() {
   String dayOfWeek = getDayAsRegex();
   return dsl.select(NEWS_SOURCES.RECIPE_FILE, USERS.KINDLE_EMAIL)
       .from(
           NEWS_SOURCES
               .join(SUBSCRIPTIONS)
               .on(SUBSCRIPTIONS.NEWS_SOURCE_ID.eq(NEWS_SOURCES.ID))
               .join(USERS)
               .on(SUBSCRIPTIONS.USER_ID.eq(USERS.ID)))
       .where(NEWS_SOURCES.CONTENT_DAYS.like(dayOfWeek))
       .fetch()
       .map(
           x ->
               new MailTask(
                   x.getValue(USERS.KINDLE_EMAIL, String.class),
                   x.getValue(NEWS_SOURCES.RECIPE_FILE, String.class)));
 }
 @Override
 public void unsubscribe(int userId, int newsSourceId) {
   dsl.delete(SUBSCRIPTIONS)
       .where(SUBSCRIPTIONS.USER_ID.eq(userId).and(SUBSCRIPTIONS.NEWS_SOURCE_ID.eq(newsSourceId)))
       .execute();
 }