Factory.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. declare(strict_types=1);
  3. class FreshRSS_Factory {
  4. /**
  5. * @throws Minz_ConfigurationNamespaceException|Minz_PDOConnectionException
  6. */
  7. public static function createUserDao(?string $username = null): FreshRSS_UserDAO {
  8. return new FreshRSS_UserDAO($username);
  9. }
  10. /**
  11. * @throws Minz_ConfigurationNamespaceException|Minz_PDOConnectionException
  12. */
  13. public static function createCategoryDao(?string $username = null): FreshRSS_CategoryDAO {
  14. switch (FreshRSS_Context::systemConf()->db['type'] ?? '') {
  15. case 'sqlite':
  16. return new FreshRSS_CategoryDAOSQLite($username);
  17. default:
  18. return new FreshRSS_CategoryDAO($username);
  19. }
  20. }
  21. /**
  22. * @throws Minz_ConfigurationNamespaceException|Minz_PDOConnectionException
  23. */
  24. public static function createFeedDao(?string $username = null): FreshRSS_FeedDAO {
  25. switch (FreshRSS_Context::systemConf()->db['type'] ?? '') {
  26. case 'sqlite':
  27. return new FreshRSS_FeedDAOSQLite($username);
  28. default:
  29. return new FreshRSS_FeedDAO($username);
  30. }
  31. }
  32. /**
  33. * @throws Minz_ConfigurationNamespaceException|Minz_PDOConnectionException
  34. */
  35. public static function createEntryDao(?string $username = null): FreshRSS_EntryDAO {
  36. switch (FreshRSS_Context::systemConf()->db['type'] ?? '') {
  37. case 'sqlite':
  38. return new FreshRSS_EntryDAOSQLite($username);
  39. case 'pgsql':
  40. return new FreshRSS_EntryDAOPGSQL($username);
  41. default:
  42. return new FreshRSS_EntryDAO($username);
  43. }
  44. }
  45. /**
  46. * @throws Minz_ConfigurationNamespaceException|Minz_PDOConnectionException
  47. */
  48. public static function createTagDao(?string $username = null): FreshRSS_TagDAO {
  49. switch (FreshRSS_Context::systemConf()->db['type'] ?? '') {
  50. case 'sqlite':
  51. return new FreshRSS_TagDAOSQLite($username);
  52. case 'pgsql':
  53. return new FreshRSS_TagDAOPGSQL($username);
  54. default:
  55. return new FreshRSS_TagDAO($username);
  56. }
  57. }
  58. /**
  59. * @throws Minz_ConfigurationNamespaceException|Minz_PDOConnectionException
  60. */
  61. public static function createStatsDAO(?string $username = null): FreshRSS_StatsDAO {
  62. switch (FreshRSS_Context::systemConf()->db['type'] ?? '') {
  63. case 'sqlite':
  64. return new FreshRSS_StatsDAOSQLite($username);
  65. case 'pgsql':
  66. return new FreshRSS_StatsDAOPGSQL($username);
  67. default:
  68. return new FreshRSS_StatsDAO($username);
  69. }
  70. }
  71. /**
  72. * @throws Minz_ConfigurationNamespaceException|Minz_PDOConnectionException
  73. */
  74. public static function createDatabaseDAO(?string $username = null): FreshRSS_DatabaseDAO {
  75. switch (FreshRSS_Context::systemConf()->db['type'] ?? '') {
  76. case 'sqlite':
  77. return new FreshRSS_DatabaseDAOSQLite($username);
  78. case 'pgsql':
  79. return new FreshRSS_DatabaseDAOPGSQL($username);
  80. default:
  81. return new FreshRSS_DatabaseDAO($username);
  82. }
  83. }
  84. }