<?xml version="1.0"?>
<puzzles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.0pdd.com/puzzles.xsd" date="2020-05-18T20:33:23+00:00" version="0.30.21">
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/15" closed="2020-04-25T16:39:16+00:00">15</issue>
    <ticket>0</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>0-7ae6cd57</id>
    <lines>26-26</lines>
    <body>extract these `Running` and `Exiting` logs to some scheduled decorator</body>
    <file>src/main/java/dev/iakunin/codexiabot/codexia/cron/ProjectsHealthCheck.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T09:00:25Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/iakunin/codexia-bot/issues/16">16</issue>
    <ticket>0</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>0-2d57295c</id>
    <lines>19-20</lines>
    <body>rewrite in much common way: `List&lt;GithubRepo&gt; findAllExistsInAllSources(Set&lt;Source&gt; sources)` and remove `findAllInCodexiaAndHackernews()` and `findAllInCodexia()` methods</body>
    <file>src/main/java/dev/iakunin/codexiabot/github/GithubModule.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T09:00:25Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/19" closed="2020-04-17T09:18:20+00:00">19</issue>
    <ticket>6</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>6-02060b89</id>
    <lines>11-16</lines>
    <body>split codexiaModule.sendReview() to codexiaModule.createReview() and codexiaModule.sendReview() - codexiaModule.createReview() - just a saving to DB. - codexiaModule.sendReview() - real sending review to Codexia api. - codexiaModule.sendReview() must be used ONLY inside a cron-job. - In other code there should be only a codexiaModule.createReview() calls. - All the codexiaModule.createReview() calls MUST be inside a transaction/</body>
    <file>src/main/java/dev/iakunin/codexiabot/codexia/CodexiaModule.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T17:07:44Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/iakunin/codexia-bot/issues/39">39</issue>
        <ticket>19</ticket>
        <estimate>0</estimate>
        <role>DEV</role>
        <id>19-703b27a3</id>
        <lines>11-11</lines>
        <body>All the codexiaModule.createReview() calls MUST be inside a transaction</body>
        <file>src/main/java/dev/iakunin/codexiabot/codexia/CodexiaModule.java</file>
        <author>Maksim Iakunin</author>
        <email>iakunin@users.noreply.github.com</email>
        <time>2020-04-17T09:18:06Z</time>
        <children/>
      </puzzle>
      <puzzle alive="true">
        <issue href="https://github.com/iakunin/codexia-bot/issues/40">40</issue>
        <ticket>19</ticket>
        <estimate>0</estimate>
        <role>DEV</role>
        <id>19-ec246873</id>
        <lines>14-15</lines>
        <body>sending meta should also be asynchronous (via cron) here should be only a saving Meta (as saving Review)</body>
        <file>src/main/java/dev/iakunin/codexiabot/codexia/CodexiaModule.java</file>
        <author>Maksim Iakunin</author>
        <email>iakunin@users.noreply.github.com</email>
        <time>2020-04-17T09:18:06Z</time>
        <children/>
      </puzzle>
      <puzzle alive="true">
        <issue href="https://github.com/iakunin/codexia-bot/issues/41">41</issue>
        <ticket>19</ticket>
        <estimate>0</estimate>
        <role>DEV</role>
        <id>19-799ed7e1</id>
        <lines>88-88</lines>
        <body>rewrite via custom Feign exceptions</body>
        <file>src/main/java/dev/iakunin/codexiabot/codexia/cron/SendReviews.java</file>
        <author>Maksim Iakunin</author>
        <email>iakunin@users.noreply.github.com</email>
        <time>2020-04-17T09:18:06Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/iakunin/codexia-bot/issues/20">20</issue>
    <ticket>6</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>6-ba4d7ce3</id>
    <lines>73-73</lines>
    <body>write tests for different timezones</body>
    <file>src/main/java/dev/iakunin/codexiabot/codexia/sdk/CodexiaClient.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T17:07:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/iakunin/codexia-bot/issues/21">21</issue>
    <ticket>6</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>6-5af20361</id>
    <lines>75-75</lines>
    <body>replace `Date` with `ZonedDateTime`</body>
    <file>src/main/java/dev/iakunin/codexiabot/codexia/sdk/CodexiaClient.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T17:07:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/iakunin/codexia-bot/issues/22">22</issue>
    <ticket>6</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>6-af8b3d4f</id>
    <lines>36-43</lines>
    <body>choose better created_at postgres-format (with or without TZ). Also think of ZonedDateTime in createdAt field. ZonedDateTime + timestamptz seems the best way. - Test changing of postgres server timezone. - Test changing of hibernate.time_zone property. - Test changing of JVM timezone. In all of these cases there MUST be valid timestamptz in postgres. In all of these cases there MUST be valid ZonedDateTime in code.</body>
    <file>src/main/java/dev/iakunin/codexiabot/common/entity/AbstractEntity.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T17:07:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/23" closed="2020-04-23T10:35:38+00:00">23</issue>
    <ticket>6</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>6-57333c2d</id>
    <lines>97-97</lines>
    <body>get rid of FoundOnReddit.TmpDto using `org.javatuples.Pair`</body>
    <file>src/main/java/dev/iakunin/codexiabot/bot/FoundOnReddit.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T17:07:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/24" closed="2020-04-23T10:35:45+00:00">24</issue>
    <ticket>6</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>6-cae02d85</id>
    <lines>113-113</lines>
    <body>get rid of FoundOnHackernews.TmpDto using `org.javatuples.Pair`</body>
    <file>src/main/java/dev/iakunin/codexiabot/bot/FoundOnHackernews.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T17:07:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/25" closed="2020-05-06T21:35:18+00:00">25</issue>
    <ticket>6</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>6-4d9a1ad5</id>
    <lines>73-73</lines>
    <body>add test case with transaction rollback</body>
    <file>src/main/java/dev/iakunin/codexiabot/bot/StarsUp.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T17:07:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/26" closed="2020-04-26T17:02:59+00:00">26</issue>
    <ticket>6</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>6-facd1e77</id>
    <lines>52-52</lines>
    <body>extract to json-file</body>
    <file>src/test/java/dev/iakunin/codexiabot/codexia/cron/ProjectsHealthCheckIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T17:07:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/iakunin/codexia-bot/issues/27">27</issue>
    <ticket>6</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>6-3551727a</id>
    <lines>13-14</lines>
    <body>this DataTypeFactory should be pull-requested to dbunit for more info see https://github.com/database-rider/database-rider/issues/102#issuecomment-511241871</body>
    <file>src/test/java/dev/iakunin/codexiabot/dbunit/CustomPostgresqlDataTypeFactory.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-13T17:07:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/52" closed="2020-05-06T20:57:08+00:00">52</issue>
    <ticket>50</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>50-620293b3</id>
    <lines>69-69</lines>
    <body>TooManyStars: add test case with transaction rollback</body>
    <file>src/main/java/dev/iakunin/codexiabot/bot/TooManyStars.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T17:06:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/iakunin/codexia-bot/issues/54">54</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-d0e206d9</id>
    <lines>98-98</lines>
    <body>Get rid of TooManyStarsResult - Review is enough (see FoundOnHackernews)</body>
    <file>src/main/java/dev/iakunin/codexiabot/bot/TooManyStars.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/55" closed="2020-05-14T16:15:20+00:00">55</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-5ffba3e0</id>
    <lines>18-18</lines>
    <body>Implement MissingFillerIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/codexia/cron/MissingFillerIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/56" closed="2020-05-14T16:15:26+00:00">56</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-c5423926</id>
    <lines>18-18</lines>
    <body>Implement ResendErroneousReviewsIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/codexia/cron/ResendErroneousReviewsIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/57" closed="2020-05-06T00:22:13+00:00">57</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-137a4b3c</id>
    <lines>18-18</lines>
    <body>Implement CodexiaParserIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/codexia/cron/CodexiaParserIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/58" closed="2020-05-04T07:39:33+00:00">58</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-6d9090eb</id>
    <lines>11-11</lines>
    <body>Implement LinesOfCodeIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/github/cron/stat/LinesOfCodeIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/59" closed="2020-05-14T16:15:34+00:00">59</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-e69f73e3</id>
    <lines>11-11</lines>
    <body>Implement GithubIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/github/cron/stat/GithubIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/60" closed="2020-05-14T16:15:44+00:00">60</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-d5175438</id>
    <lines>11-11</lines>
    <body>Implement ParserIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/reddit/cron/ParserIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/61" closed="2020-05-13T14:55:56+00:00">61</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-f8a4ea3e</id>
    <lines>11-11</lines>
    <body>Implement RetryErroneousIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/hackernews/cron/RetryErroneousIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/62" closed="2020-05-13T14:07:54+00:00">62</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-a0a04470</id>
    <lines>11-11</lines>
    <body>Implement GapsFillerIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/hackernews/cron/GapsFillerIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/63" closed="2020-04-23T10:35:51+00:00">63</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-3ebb1a8d</id>
    <lines>11-11</lines>
    <body>Implement ItemsHealthCheckIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/hackernews/cron/ItemsHealthCheckIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/64" closed="2020-05-13T13:44:40+00:00">64</issue>
    <ticket>10</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>10-2ff894fd</id>
    <lines>11-11</lines>
    <body>Implement IncrementedParserIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/hackernews/cron/IncrementedParserIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-20T18:35:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/74" closed="2020-05-07T10:01:10+00:00">74</issue>
    <ticket>66</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>66-1eb62372</id>
    <lines>11-11</lines>
    <body>Implement AllItemsIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/hackernews/cron/healthcheck/AllItemsIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-23T10:35:24Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/iakunin/codexia-bot/issues/167" closed="2020-05-17T16:22:28+00:00">167</issue>
        <ticket>74</ticket>
        <estimate>0</estimate>
        <role>DEV</role>
        <id>74-721dfe5c</id>
        <lines>23-24</lines>
        <body>AllItems: get rid of this @Transactional spike to do so it's necessary to get rid of Stream&lt;&gt; in repository</body>
        <file>src/main/java/dev/iakunin/codexiabot/hackernews/cron/healthcheck/AllItems.java</file>
        <author>iakunin</author>
        <email>iakunin@users.noreply.github.com</email>
        <time>2020-05-07T09:47:14Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/iakunin/codexia-bot/issues/168" closed="2020-05-17T16:22:33+00:00">168</issue>
        <ticket>74</ticket>
        <estimate>0</estimate>
        <role>DEV</role>
        <id>74-fdc38b44</id>
        <lines>26-27</lines>
        <body>GapsFiller: get rid of this @Transactional spike to do so it's necessary to get rid of Stream&lt;&gt; in repository</body>
        <file>src/main/java/dev/iakunin/codexiabot/hackernews/cron/GapsFiller.java</file>
        <author>iakunin</author>
        <email>iakunin@users.noreply.github.com</email>
        <time>2020-05-07T09:47:14Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/75" closed="2020-05-10T21:21:49+00:00">75</issue>
    <ticket>66</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>66-331f2e6f</id>
    <lines>11-11</lines>
    <body>Implement CodexiaItemsIntegrationTest</body>
    <file>src/test/java/dev/iakunin/codexiabot/hackernews/cron/healthcheck/CodexiaItemsIntegrationTest.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-23T10:35:24Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/iakunin/codexia-bot/issues/89">89</issue>
    <ticket>85</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>85-a7ac8fa2</id>
    <lines>15-15</lines>
    <body>Remove this cron after https://github.com/yegor256/codexia/issues/98 is done</body>
    <file>src/main/java/dev/iakunin/codexiabot/codexia/cron/ResendReviewsUntilDuplicated.java</file>
    <author>Maksim Iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-25T19:42:14Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/130" closed="2020-05-03T15:58:54+00:00">130</issue>
    <ticket>92</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>92-3a978031</id>
    <lines>26-26</lines>
    <body>make this class generic `&lt;T extends AbstractStat&gt;`</body>
    <file>src/main/java/dev/iakunin/codexiabot/github/entity/GithubRepoStat.java</file>
    <author>iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-30T12:08:20Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/131" closed="2020-05-06T17:11:59+00:00">131</issue>
    <ticket>92</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>92-312fe964</id>
    <lines>41-41</lines>
    <body>replace with FirstOf with 2-arg-ctor when it's merged to cactoos</body>
    <file>src/main/java/dev/iakunin/codexiabot/bot/toosmall/ExactItem.java</file>
    <author>iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-30T16:52:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/132" closed="2020-05-06T17:12:06+00:00">132</issue>
    <ticket>92</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>92-160d1a52</id>
    <lines>85-85</lines>
    <body>extract this class to cactoos and replace when it's merged</body>
    <file>src/main/java/dev/iakunin/codexiabot/bot/toosmall/ExactItem.java</file>
    <author>iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-30T16:52:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/133" closed="2020-05-02T12:51:21+00:00">133</issue>
    <ticket>92</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>92-2cd03fd8</id>
    <lines>13-13</lines>
    <body>collapse all *CronConfig classes into as inner class of *</body>
    <file>src/main/java/dev/iakunin/codexiabot/bot/config/TooSmallCronConfig.java</file>
    <author>iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-04-30T17:48:12Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/134" closed="2020-05-06T19:46:09+00:00">134</issue>
    <ticket>92</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>92-4d3ad9b9</id>
    <lines>98-98</lines>
    <body>Small: add test case with transaction rollback</body>
    <file>src/main/java/dev/iakunin/codexiabot/bot/Small.java</file>
    <author>iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-05-01T10:54:29Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/140" closed="2020-05-06T17:12:12+00:00">140</issue>
    <ticket>136</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>136-5f5351ff</id>
    <lines>8-9</lines>
    <body>replace this class with just ScalarWithFallback when `cactoos` new version is released</body>
    <file>src/main/java/dev/iakunin/codexiabot/bot/toosmall/FallbackFromNull.java</file>
    <author>iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-05-02T10:30:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/198" closed="2020-05-17T14:27:05+00:00">198</issue>
    <ticket>186</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>186-f76ca369</id>
    <lines>24-24</lines>
    <body>CodexiaReviewRepository: Get rid of this query completely</body>
    <file>src/main/java/dev/iakunin/codexiabot/codexia/repository/CodexiaReviewRepository.java</file>
    <author>iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-05-17T09:51:37Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/199" closed="2020-05-17T16:22:39+00:00">199</issue>
    <ticket>186</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>186-4b57b47d</id>
    <lines>31-31</lines>
    <body>GapsFiller get rid of this heavy SQL</body>
    <file>src/main/java/dev/iakunin/codexiabot/hackernews/cron/GapsFiller.java</file>
    <author>iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-05-17T09:51:37Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/iakunin/codexia-bot/issues/205" closed="2020-05-18T19:57:22+00:00">205</issue>
    <ticket>150</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>150-f69aa10e</id>
    <lines>39-39</lines>
    <body>writer should be fault tolerant</body>
    <file>src/main/java/dev/iakunin/codexiabot/codexia/cron/CodexiaParser.java</file>
    <author>iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-05-17T17:53:54Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/iakunin/codexia-bot/issues/209">209</issue>
    <ticket>93</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>93-d07124ac</id>
    <lines>65-65</lines>
    <body>LinesOfCodeImpl: rewrite via custom Feign exceptions</body>
    <file>src/main/java/dev/iakunin/codexiabot/github/service/LinesOfCodeImpl.java</file>
    <author>iakunin</author>
    <email>iakunin@users.noreply.github.com</email>
    <time>2020-05-18T19:35:12Z</time>
    <children/>
  </puzzle>
</puzzles>
