appwrite 28.4.0 → 30.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. checksums.yaml +4 -4
  2. data/lib/appwrite/client.rb +19 -19
  3. data/lib/appwrite/enums/billing_plan_group.rb +0 -1
  4. data/lib/appwrite/enums/execution_trigger.rb +1 -0
  5. data/lib/appwrite/enums/proxy_rule_protocol.rb +8 -0
  6. data/lib/appwrite/models/account.rb +8 -8
  7. data/lib/appwrite/models/activity_event.rb +1 -0
  8. data/lib/appwrite/models/activity_event_list.rb +1 -0
  9. data/lib/appwrite/models/additional_resource.rb +1 -0
  10. data/lib/appwrite/models/algo_argon2.rb +1 -0
  11. data/lib/appwrite/models/algo_bcrypt.rb +1 -0
  12. data/lib/appwrite/models/algo_md5.rb +1 -0
  13. data/lib/appwrite/models/algo_phpass.rb +1 -0
  14. data/lib/appwrite/models/algo_scrypt.rb +1 -0
  15. data/lib/appwrite/models/algo_scrypt_modified.rb +1 -0
  16. data/lib/appwrite/models/algo_sha.rb +1 -0
  17. data/lib/appwrite/models/app.rb +1 -0
  18. data/lib/appwrite/models/app_installation.rb +2 -1
  19. data/lib/appwrite/models/app_installation_list.rb +1 -0
  20. data/lib/appwrite/models/app_key.rb +2 -1
  21. data/lib/appwrite/models/app_key_list.rb +1 -0
  22. data/lib/appwrite/models/app_scope.rb +1 -0
  23. data/lib/appwrite/models/app_scope_list.rb +1 -0
  24. data/lib/appwrite/models/app_secret.rb +2 -1
  25. data/lib/appwrite/models/app_secret_list.rb +1 -0
  26. data/lib/appwrite/models/app_secret_plaintext.rb +2 -1
  27. data/lib/appwrite/models/apps_list.rb +1 -0
  28. data/lib/appwrite/models/attribute_bigint.rb +10 -4
  29. data/lib/appwrite/models/attribute_boolean.rb +8 -2
  30. data/lib/appwrite/models/attribute_datetime.rb +8 -2
  31. data/lib/appwrite/models/attribute_email.rb +8 -2
  32. data/lib/appwrite/models/attribute_enum.rb +8 -2
  33. data/lib/appwrite/models/attribute_float.rb +10 -4
  34. data/lib/appwrite/models/attribute_integer.rb +10 -4
  35. data/lib/appwrite/models/attribute_ip.rb +8 -2
  36. data/lib/appwrite/models/attribute_line.rb +8 -2
  37. data/lib/appwrite/models/attribute_list.rb +1 -0
  38. data/lib/appwrite/models/attribute_longtext.rb +9 -3
  39. data/lib/appwrite/models/attribute_mediumtext.rb +9 -3
  40. data/lib/appwrite/models/attribute_object.rb +7 -1
  41. data/lib/appwrite/models/attribute_point.rb +8 -2
  42. data/lib/appwrite/models/attribute_polygon.rb +8 -2
  43. data/lib/appwrite/models/attribute_relationship.rb +7 -1
  44. data/lib/appwrite/models/attribute_string.rb +9 -3
  45. data/lib/appwrite/models/attribute_text.rb +9 -3
  46. data/lib/appwrite/models/attribute_url.rb +8 -2
  47. data/lib/appwrite/models/attribute_varchar.rb +9 -3
  48. data/lib/appwrite/models/attribute_vector.rb +7 -1
  49. data/lib/appwrite/models/backup_archive.rb +5 -4
  50. data/lib/appwrite/models/backup_archive_list.rb +1 -0
  51. data/lib/appwrite/models/backup_policy.rb +3 -2
  52. data/lib/appwrite/models/backup_policy_list.rb +1 -0
  53. data/lib/appwrite/models/backup_restoration.rb +2 -1
  54. data/lib/appwrite/models/backup_restoration_list.rb +1 -0
  55. data/lib/appwrite/models/billing_limits.rb +8 -8
  56. data/lib/appwrite/models/billing_plan.rb +19 -14
  57. data/lib/appwrite/models/billing_plan_addon.rb +2 -2
  58. data/lib/appwrite/models/billing_plan_addon_details.rb +2 -1
  59. data/lib/appwrite/models/billing_plan_dedicated_database_limits.rb +19 -19
  60. data/lib/appwrite/models/billing_plan_limits.rb +2 -2
  61. data/lib/appwrite/models/billing_plan_supported_addons.rb +1 -0
  62. data/lib/appwrite/models/block.rb +4 -33
  63. data/lib/appwrite/models/bucket.rb +11 -0
  64. data/lib/appwrite/models/bucket_list.rb +1 -0
  65. data/lib/appwrite/models/collection.rb +6 -0
  66. data/lib/appwrite/models/collection_list.rb +1 -0
  67. data/lib/appwrite/models/column_bigint.rb +10 -4
  68. data/lib/appwrite/models/column_boolean.rb +8 -2
  69. data/lib/appwrite/models/column_datetime.rb +8 -2
  70. data/lib/appwrite/models/column_email.rb +8 -2
  71. data/lib/appwrite/models/column_enum.rb +8 -2
  72. data/lib/appwrite/models/column_float.rb +10 -4
  73. data/lib/appwrite/models/column_index.rb +7 -1
  74. data/lib/appwrite/models/column_index_list.rb +1 -0
  75. data/lib/appwrite/models/column_integer.rb +10 -4
  76. data/lib/appwrite/models/column_ip.rb +8 -2
  77. data/lib/appwrite/models/column_line.rb +8 -2
  78. data/lib/appwrite/models/column_list.rb +1 -0
  79. data/lib/appwrite/models/column_longtext.rb +9 -3
  80. data/lib/appwrite/models/column_mediumtext.rb +9 -3
  81. data/lib/appwrite/models/column_point.rb +8 -2
  82. data/lib/appwrite/models/column_polygon.rb +8 -2
  83. data/lib/appwrite/models/column_relationship.rb +7 -1
  84. data/lib/appwrite/models/column_string.rb +9 -3
  85. data/lib/appwrite/models/column_text.rb +9 -3
  86. data/lib/appwrite/models/column_url.rb +8 -2
  87. data/lib/appwrite/models/column_varchar.rb +9 -3
  88. data/lib/appwrite/models/continent.rb +1 -0
  89. data/lib/appwrite/models/continent_list.rb +1 -0
  90. data/lib/appwrite/models/country.rb +1 -0
  91. data/lib/appwrite/models/country_list.rb +1 -0
  92. data/lib/appwrite/models/currency.rb +1 -0
  93. data/lib/appwrite/models/currency_list.rb +1 -0
  94. data/lib/appwrite/models/database.rb +15 -9
  95. data/lib/appwrite/models/database_list.rb +1 -0
  96. data/lib/appwrite/models/database_migration.rb +1 -0
  97. data/lib/appwrite/models/database_migration_list.rb +1 -0
  98. data/lib/appwrite/models/database_status.rb +6 -5
  99. data/lib/appwrite/models/database_status_connections.rb +1 -0
  100. data/lib/appwrite/models/database_status_replica.rb +3 -2
  101. data/lib/appwrite/models/database_status_volume.rb +1 -0
  102. data/lib/appwrite/models/dedicated_database.rb +8 -7
  103. data/lib/appwrite/models/dedicated_database_backup.rb +6 -5
  104. data/lib/appwrite/models/dedicated_database_backup_list.rb +1 -0
  105. data/lib/appwrite/models/dedicated_database_backup_storage.rb +1 -0
  106. data/lib/appwrite/models/dedicated_database_branch.rb +2 -1
  107. data/lib/appwrite/models/dedicated_database_branch_list.rb +1 -0
  108. data/lib/appwrite/models/dedicated_database_execution.rb +1 -0
  109. data/lib/appwrite/models/dedicated_database_execution_column.rb +1 -0
  110. data/lib/appwrite/models/dedicated_database_extensions.rb +1 -0
  111. data/lib/appwrite/models/dedicated_database_list.rb +1 -0
  112. data/lib/appwrite/models/dedicated_database_member.rb +3 -2
  113. data/lib/appwrite/models/dedicated_database_operation.rb +4 -3
  114. data/lib/appwrite/models/dedicated_database_operation_list.rb +1 -0
  115. data/lib/appwrite/models/dedicated_database_pitr_windows.rb +1 -0
  116. data/lib/appwrite/models/dedicated_database_pooler.rb +1 -0
  117. data/lib/appwrite/models/dedicated_database_replicas.rb +3 -2
  118. data/lib/appwrite/models/dedicated_database_restoration.rb +11 -5
  119. data/lib/appwrite/models/dedicated_database_restoration_list.rb +1 -0
  120. data/lib/appwrite/models/dedicated_database_specification.rb +1 -0
  121. data/lib/appwrite/models/dedicated_database_specification_list.rb +4 -8
  122. data/lib/appwrite/models/deployment.rb +1 -0
  123. data/lib/appwrite/models/deployment_list.rb +1 -0
  124. data/lib/appwrite/models/document.rb +1 -0
  125. data/lib/appwrite/models/document_list.rb +1 -0
  126. data/lib/appwrite/models/domain.rb +1 -1
  127. data/lib/appwrite/models/domain_price.rb +2 -2
  128. data/lib/appwrite/models/email_template.rb +1 -0
  129. data/lib/appwrite/models/email_template_list.rb +1 -0
  130. data/lib/appwrite/models/embedding.rb +1 -0
  131. data/lib/appwrite/models/embedding_list.rb +1 -0
  132. data/lib/appwrite/models/ephemeral_key.rb +6 -0
  133. data/lib/appwrite/models/execution.rb +3 -1
  134. data/lib/appwrite/models/execution_list.rb +1 -0
  135. data/lib/appwrite/models/file.rb +1 -0
  136. data/lib/appwrite/models/file_list.rb +1 -0
  137. data/lib/appwrite/models/framework.rb +1 -0
  138. data/lib/appwrite/models/framework_adapter.rb +2 -1
  139. data/lib/appwrite/models/framework_list.rb +1 -0
  140. data/lib/appwrite/models/function.rb +15 -4
  141. data/lib/appwrite/models/function_list.rb +1 -0
  142. data/lib/appwrite/models/headers.rb +1 -0
  143. data/lib/appwrite/models/identity.rb +1 -0
  144. data/lib/appwrite/models/identity_list.rb +1 -0
  145. data/lib/appwrite/models/index.rb +7 -1
  146. data/lib/appwrite/models/index_list.rb +1 -0
  147. data/lib/appwrite/models/insight.rb +4 -3
  148. data/lib/appwrite/models/insight_cta.rb +1 -0
  149. data/lib/appwrite/models/insight_list.rb +1 -0
  150. data/lib/appwrite/models/jwt.rb +1 -0
  151. data/lib/appwrite/models/key.rb +6 -0
  152. data/lib/appwrite/models/key_list.rb +1 -0
  153. data/lib/appwrite/models/language.rb +1 -0
  154. data/lib/appwrite/models/language_list.rb +1 -0
  155. data/lib/appwrite/models/locale.rb +12 -11
  156. data/lib/appwrite/models/locale_code.rb +1 -0
  157. data/lib/appwrite/models/locale_code_list.rb +1 -0
  158. data/lib/appwrite/models/membership.rb +1 -0
  159. data/lib/appwrite/models/membership_list.rb +1 -0
  160. data/lib/appwrite/models/message.rb +4 -3
  161. data/lib/appwrite/models/message_list.rb +1 -0
  162. data/lib/appwrite/models/mfa_challenge.rb +1 -0
  163. data/lib/appwrite/models/mfa_challenge_secret.rb +1 -0
  164. data/lib/appwrite/models/mfa_factors.rb +1 -0
  165. data/lib/appwrite/models/mfa_recovery_codes.rb +1 -0
  166. data/lib/appwrite/models/mfa_type.rb +1 -0
  167. data/lib/appwrite/models/mock_number.rb +1 -0
  168. data/lib/appwrite/models/mock_number_list.rb +1 -0
  169. data/lib/appwrite/models/o_auth2_amazon.rb +1 -0
  170. data/lib/appwrite/models/o_auth2_apple.rb +1 -0
  171. data/lib/appwrite/models/o_auth2_appwrite.rb +1 -0
  172. data/lib/appwrite/models/o_auth2_auth0.rb +2 -1
  173. data/lib/appwrite/models/o_auth2_authentik.rb +1 -0
  174. data/lib/appwrite/models/o_auth2_autodesk.rb +1 -0
  175. data/lib/appwrite/models/o_auth2_bitbucket.rb +1 -0
  176. data/lib/appwrite/models/o_auth2_bitly.rb +1 -0
  177. data/lib/appwrite/models/o_auth2_box.rb +1 -0
  178. data/lib/appwrite/models/o_auth2_cloudflare.rb +1 -0
  179. data/lib/appwrite/models/o_auth2_dailymotion.rb +1 -0
  180. data/lib/appwrite/models/o_auth2_discord.rb +2 -1
  181. data/lib/appwrite/models/o_auth2_disqus.rb +1 -0
  182. data/lib/appwrite/models/o_auth2_dropbox.rb +1 -0
  183. data/lib/appwrite/models/o_auth2_etsy.rb +1 -0
  184. data/lib/appwrite/models/o_auth2_facebook.rb +1 -0
  185. data/lib/appwrite/models/o_auth2_figma.rb +1 -0
  186. data/lib/appwrite/models/o_auth2_fusion_auth.rb +1 -0
  187. data/lib/appwrite/models/o_auth2_github.rb +2 -1
  188. data/lib/appwrite/models/o_auth2_gitlab.rb +1 -0
  189. data/lib/appwrite/models/o_auth2_google.rb +1 -0
  190. data/lib/appwrite/models/o_auth2_hugging_face.rb +1 -0
  191. data/lib/appwrite/models/o_auth2_keycloak.rb +1 -0
  192. data/lib/appwrite/models/o_auth2_kick.rb +1 -0
  193. data/lib/appwrite/models/o_auth2_linkedin.rb +1 -0
  194. data/lib/appwrite/models/o_auth2_microsoft.rb +2 -1
  195. data/lib/appwrite/models/o_auth2_notion.rb +1 -0
  196. data/lib/appwrite/models/o_auth2_oidc.rb +7 -6
  197. data/lib/appwrite/models/o_auth2_okta.rb +2 -1
  198. data/lib/appwrite/models/o_auth2_paypal.rb +1 -0
  199. data/lib/appwrite/models/o_auth2_podio.rb +1 -0
  200. data/lib/appwrite/models/o_auth2_provider_list.rb +1 -0
  201. data/lib/appwrite/models/o_auth2_resend.rb +1 -0
  202. data/lib/appwrite/models/o_auth2_salesforce.rb +2 -1
  203. data/lib/appwrite/models/o_auth2_slack.rb +1 -0
  204. data/lib/appwrite/models/o_auth2_spotify.rb +1 -0
  205. data/lib/appwrite/models/o_auth2_stripe.rb +1 -0
  206. data/lib/appwrite/models/o_auth2_tradeshift.rb +1 -0
  207. data/lib/appwrite/models/o_auth2_twitch.rb +1 -0
  208. data/lib/appwrite/models/o_auth2_word_press.rb +1 -0
  209. data/lib/appwrite/models/o_auth2_x.rb +1 -0
  210. data/lib/appwrite/models/o_auth2_yahoo.rb +1 -0
  211. data/lib/appwrite/models/o_auth2_yandex.rb +1 -0
  212. data/lib/appwrite/models/o_auth2_zoho.rb +2 -1
  213. data/lib/appwrite/models/o_auth2_zoom.rb +1 -0
  214. data/lib/appwrite/models/oauth2_approve.rb +1 -0
  215. data/lib/appwrite/models/oauth2_authorize.rb +1 -0
  216. data/lib/appwrite/models/oauth2_consent.rb +1 -0
  217. data/lib/appwrite/models/oauth2_consent_list.rb +1 -0
  218. data/lib/appwrite/models/oauth2_consent_token.rb +1 -0
  219. data/lib/appwrite/models/oauth2_consent_token_list.rb +1 -0
  220. data/lib/appwrite/models/oauth2_device_authorization.rb +1 -0
  221. data/lib/appwrite/models/oauth2_grant.rb +1 -0
  222. data/lib/appwrite/models/oauth2_introspection.rb +11 -11
  223. data/lib/appwrite/models/oauth2_organization.rb +1 -0
  224. data/lib/appwrite/models/oauth2_organization_list.rb +1 -0
  225. data/lib/appwrite/models/oauth2_par.rb +1 -0
  226. data/lib/appwrite/models/oauth2_project.rb +1 -0
  227. data/lib/appwrite/models/oauth2_project_list.rb +1 -0
  228. data/lib/appwrite/models/oauth2_reject.rb +1 -0
  229. data/lib/appwrite/models/oauth2_token.rb +3 -2
  230. data/lib/appwrite/models/organization.rb +21 -20
  231. data/lib/appwrite/models/passkey.rb +1 -0
  232. data/lib/appwrite/models/passkey_challenge.rb +1 -0
  233. data/lib/appwrite/models/passkey_list.rb +1 -0
  234. data/lib/appwrite/models/phone.rb +1 -0
  235. data/lib/appwrite/models/phone_list.rb +1 -0
  236. data/lib/appwrite/models/platform_android.rb +1 -0
  237. data/lib/appwrite/models/platform_apple.rb +1 -0
  238. data/lib/appwrite/models/platform_linux.rb +1 -0
  239. data/lib/appwrite/models/platform_list.rb +1 -0
  240. data/lib/appwrite/models/platform_web.rb +1 -0
  241. data/lib/appwrite/models/platform_windows.rb +1 -0
  242. data/lib/appwrite/models/policy_deny_aliased_email.rb +1 -0
  243. data/lib/appwrite/models/policy_deny_corporate_email.rb +1 -0
  244. data/lib/appwrite/models/policy_deny_disposable_email.rb +1 -0
  245. data/lib/appwrite/models/policy_deny_free_email.rb +1 -0
  246. data/lib/appwrite/models/policy_list.rb +1 -0
  247. data/lib/appwrite/models/policy_membership_privacy.rb +1 -0
  248. data/lib/appwrite/models/policy_mfa_factors.rb +1 -0
  249. data/lib/appwrite/models/policy_passkey.rb +1 -0
  250. data/lib/appwrite/models/policy_password_dictionary.rb +9 -3
  251. data/lib/appwrite/models/policy_password_history.rb +1 -0
  252. data/lib/appwrite/models/policy_password_personal_data.rb +9 -3
  253. data/lib/appwrite/models/policy_password_strength.rb +1 -0
  254. data/lib/appwrite/models/policy_session_alert.rb +1 -0
  255. data/lib/appwrite/models/policy_session_duration.rb +1 -0
  256. data/lib/appwrite/models/policy_session_invalidation.rb +1 -0
  257. data/lib/appwrite/models/policy_session_limit.rb +1 -0
  258. data/lib/appwrite/models/policy_user_limit.rb +1 -0
  259. data/lib/appwrite/models/postgres_extension.rb +1 -0
  260. data/lib/appwrite/models/presence.rb +4 -3
  261. data/lib/appwrite/models/presence_list.rb +1 -0
  262. data/lib/appwrite/models/program.rb +1 -0
  263. data/lib/appwrite/models/project.rb +23 -27
  264. data/lib/appwrite/models/project_auth_method.rb +1 -0
  265. data/lib/appwrite/models/project_list.rb +1 -0
  266. data/lib/appwrite/models/project_protocol.rb +1 -0
  267. data/lib/appwrite/models/project_service.rb +1 -0
  268. data/lib/appwrite/models/provider.rb +2 -1
  269. data/lib/appwrite/models/provider_list.rb +1 -0
  270. data/lib/appwrite/models/proxy_invalidation.rb +1 -0
  271. data/lib/appwrite/models/proxy_rule.rb +23 -4
  272. data/lib/appwrite/models/proxy_rule_list.rb +1 -0
  273. data/lib/appwrite/models/report.rb +2 -1
  274. data/lib/appwrite/models/report_list.rb +1 -0
  275. data/lib/appwrite/models/resource_token.rb +1 -0
  276. data/lib/appwrite/models/resource_token_list.rb +1 -0
  277. data/lib/appwrite/models/row.rb +1 -0
  278. data/lib/appwrite/models/row_list.rb +1 -0
  279. data/lib/appwrite/models/runtime.rb +1 -0
  280. data/lib/appwrite/models/runtime_list.rb +1 -0
  281. data/lib/appwrite/models/session.rb +1 -0
  282. data/lib/appwrite/models/session_list.rb +1 -0
  283. data/lib/appwrite/models/site.rb +6 -0
  284. data/lib/appwrite/models/site_list.rb +1 -0
  285. data/lib/appwrite/models/specification.rb +1 -0
  286. data/lib/appwrite/models/specification_list.rb +1 -0
  287. data/lib/appwrite/models/subscriber.rb +1 -0
  288. data/lib/appwrite/models/subscriber_list.rb +1 -0
  289. data/lib/appwrite/models/table.rb +6 -0
  290. data/lib/appwrite/models/table_list.rb +1 -0
  291. data/lib/appwrite/models/target.rb +2 -1
  292. data/lib/appwrite/models/target_list.rb +1 -0
  293. data/lib/appwrite/models/team.rb +1 -0
  294. data/lib/appwrite/models/team_list.rb +1 -0
  295. data/lib/appwrite/models/token.rb +1 -0
  296. data/lib/appwrite/models/token_secret.rb +1 -0
  297. data/lib/appwrite/models/topic.rb +8 -2
  298. data/lib/appwrite/models/topic_list.rb +1 -0
  299. data/lib/appwrite/models/transaction.rb +1 -0
  300. data/lib/appwrite/models/transaction_list.rb +1 -0
  301. data/lib/appwrite/models/usage_billing_plan.rb +27 -27
  302. data/lib/appwrite/models/user.rb +12 -11
  303. data/lib/appwrite/models/user_list.rb +1 -0
  304. data/lib/appwrite/models/variable.rb +6 -0
  305. data/lib/appwrite/models/variable_list.rb +1 -0
  306. data/lib/appwrite/models/vectorsdb_collection.rb +6 -0
  307. data/lib/appwrite/models/vectorsdb_collection_list.rb +1 -0
  308. data/lib/appwrite/models/webhook.rb +6 -0
  309. data/lib/appwrite/models/webhook_list.rb +1 -0
  310. data/lib/appwrite/query/builder.rb +361 -0
  311. data/lib/appwrite/query.rb +190 -0
  312. data/lib/appwrite/services/account.rb +135 -107
  313. data/lib/appwrite/services/activities.rb +8 -5
  314. data/lib/appwrite/services/advisor.rb +19 -18
  315. data/lib/appwrite/services/apps.rb +89 -89
  316. data/lib/appwrite/services/avatars.rb +21 -21
  317. data/lib/appwrite/services/backups.rb +42 -33
  318. data/lib/appwrite/services/databases.rb +727 -488
  319. data/lib/appwrite/services/documents_db.rb +266 -190
  320. data/lib/appwrite/services/domains.rb +63 -57
  321. data/lib/appwrite/services/embeddings.rb +2 -2
  322. data/lib/appwrite/services/functions.rb +132 -112
  323. data/lib/appwrite/services/graphql.rb +4 -4
  324. data/lib/appwrite/services/messaging.rb +172 -156
  325. data/lib/appwrite/services/mongo.rb +206 -133
  326. data/lib/appwrite/services/mysql.rb +224 -147
  327. data/lib/appwrite/services/oauth2.rb +27 -27
  328. data/lib/appwrite/services/organization.rb +59 -247
  329. data/lib/appwrite/services/postgresql.rb +238 -161
  330. data/lib/appwrite/services/presences.rb +17 -16
  331. data/lib/appwrite/services/project.rb +187 -147
  332. data/lib/appwrite/services/proxy.rb +70 -23
  333. data/lib/appwrite/services/sites.rb +124 -108
  334. data/lib/appwrite/services/storage.rb +77 -62
  335. data/lib/appwrite/services/tables_db.rb +832 -589
  336. data/lib/appwrite/services/teams.rb +83 -81
  337. data/lib/appwrite/services/tokens.rb +25 -24
  338. data/lib/appwrite/services/users.rb +170 -199
  339. data/lib/appwrite/services/vectors_db.rb +199 -179
  340. data/lib/appwrite/services/waf.rb +7 -7
  341. data/lib/appwrite/services/webhooks.rb +31 -24
  342. data/lib/appwrite/topic.rb +53 -0
  343. data/lib/appwrite.rb +6 -9
  344. metadata +6 -8
  345. data/lib/appwrite/enums/organization_key_scopes.rb +0 -22
  346. data/lib/appwrite/models/dedicated_database_specification_pricing.rb +0 -42
  347. data/lib/appwrite/models/dev_key.rb +0 -62
  348. data/lib/appwrite/models/log.rb +0 -132
  349. data/lib/appwrite/models/log_list.rb +0 -32
@@ -0,0 +1,361 @@
1
+ require 'json'
2
+
3
+ module Appwrite
4
+ class Query::Builder
5
+ def initialize
6
+ @queries = []
7
+ end
8
+
9
+ def build
10
+ return @queries.dup
11
+ end
12
+
13
+ def equal(attribute, value)
14
+ return push(Query.equal(attribute, value))
15
+ end
16
+
17
+ def not_equal(attribute, value)
18
+ return push(Query.not_equal(attribute, value))
19
+ end
20
+
21
+ def less_than(attribute, value)
22
+ return push(Query.less_than(attribute, value))
23
+ end
24
+
25
+ def less_than_equal(attribute, value)
26
+ return push(Query.less_than_equal(attribute, value))
27
+ end
28
+
29
+ def greater_than(attribute, value)
30
+ return push(Query.greater_than(attribute, value))
31
+ end
32
+
33
+ def greater_than_equal(attribute, value)
34
+ return push(Query.greater_than_equal(attribute, value))
35
+ end
36
+
37
+ def search(attribute, value)
38
+ return push(Query.search(attribute, value))
39
+ end
40
+
41
+ def is_null(attribute)
42
+ return push(Query.is_null(attribute))
43
+ end
44
+
45
+ def is_not_null(attribute)
46
+ return push(Query.is_not_null(attribute))
47
+ end
48
+
49
+ def between(attribute, start, ending)
50
+ return push(Query.between(attribute, start, ending))
51
+ end
52
+
53
+ def starts_with(attribute, value)
54
+ return push(Query.starts_with(attribute, value))
55
+ end
56
+
57
+ def ends_with(attribute, value)
58
+ return push(Query.ends_with(attribute, value))
59
+ end
60
+
61
+ def select(attributes)
62
+ return push(Query.select(attributes))
63
+ end
64
+
65
+ def cursor_after(id)
66
+ return push(Query.cursor_after(id))
67
+ end
68
+
69
+ def cursor_before(id)
70
+ return push(Query.cursor_before(id))
71
+ end
72
+
73
+ def order_asc(attribute)
74
+ return push(Query.order_asc(attribute))
75
+ end
76
+
77
+ def order_desc(attribute)
78
+ return push(Query.order_desc(attribute))
79
+ end
80
+
81
+ def order_random()
82
+ return push(Query.order_random())
83
+ end
84
+
85
+ def limit(limit)
86
+ return push(Query.limit(limit))
87
+ end
88
+
89
+ def offset(offset)
90
+ return push(Query.offset(offset))
91
+ end
92
+
93
+ def contains(attribute, value)
94
+ return push(Query.contains(attribute, value))
95
+ end
96
+
97
+ def contains_any(attribute, value)
98
+ return push(Query.contains_any(attribute, value))
99
+ end
100
+
101
+ def contains_all(attribute, value)
102
+ return push(Query.contains_all(attribute, value))
103
+ end
104
+
105
+ def not_contains(attribute, value)
106
+ return push(Query.not_contains(attribute, value))
107
+ end
108
+
109
+ def not_search(attribute, value)
110
+ return push(Query.not_search(attribute, value))
111
+ end
112
+
113
+ def not_between(attribute, start, ending)
114
+ return push(Query.not_between(attribute, start, ending))
115
+ end
116
+
117
+ def not_starts_with(attribute, value)
118
+ return push(Query.not_starts_with(attribute, value))
119
+ end
120
+
121
+ def not_ends_with(attribute, value)
122
+ return push(Query.not_ends_with(attribute, value))
123
+ end
124
+
125
+ def regex(attribute, pattern)
126
+ return push(Query.regex(attribute, pattern))
127
+ end
128
+
129
+ def exists(attributes)
130
+ return push(Query.exists(attributes))
131
+ end
132
+
133
+ def not_exists(attributes)
134
+ return push(Query.not_exists(attributes))
135
+ end
136
+
137
+ def created_before(value)
138
+ return push(Query.created_before(value))
139
+ end
140
+
141
+ def created_after(value)
142
+ return push(Query.created_after(value))
143
+ end
144
+
145
+ def created_between(start, ending)
146
+ return push(Query.created_between(start, ending))
147
+ end
148
+
149
+ def updated_before(value)
150
+ return push(Query.updated_before(value))
151
+ end
152
+
153
+ def updated_after(value)
154
+ return push(Query.updated_after(value))
155
+ end
156
+
157
+ def updated_between(start, ending)
158
+ return push(Query.updated_between(start, ending))
159
+ end
160
+
161
+ def or(queries)
162
+ return push(Query.or(queries))
163
+ end
164
+
165
+ def and(queries)
166
+ return push(Query.and(queries))
167
+ end
168
+
169
+ def elem_match(attribute, queries)
170
+ return push(Query.elem_match(attribute, queries))
171
+ end
172
+
173
+ def relationship(attribute, queries)
174
+ return push(Query.relationship(attribute, queries))
175
+ end
176
+
177
+ def distance_equal(attribute, values, distance, meters = true)
178
+ return push(Query.distance_equal(attribute, values, distance, meters))
179
+ end
180
+
181
+ def distance_not_equal(attribute, values, distance, meters = true)
182
+ return push(Query.distance_not_equal(attribute, values, distance, meters))
183
+ end
184
+
185
+ def distance_greater_than(attribute, values, distance, meters = true)
186
+ return push(Query.distance_greater_than(attribute, values, distance, meters))
187
+ end
188
+
189
+ def distance_less_than(attribute, values, distance, meters = true)
190
+ return push(Query.distance_less_than(attribute, values, distance, meters))
191
+ end
192
+
193
+ def intersects(attribute, values)
194
+ return push(Query.intersects(attribute, values))
195
+ end
196
+
197
+ def not_intersects(attribute, values)
198
+ return push(Query.not_intersects(attribute, values))
199
+ end
200
+
201
+ def crosses(attribute, values)
202
+ return push(Query.crosses(attribute, values))
203
+ end
204
+
205
+ def not_crosses(attribute, values)
206
+ return push(Query.not_crosses(attribute, values))
207
+ end
208
+
209
+ def overlaps(attribute, values)
210
+ return push(Query.overlaps(attribute, values))
211
+ end
212
+
213
+ def not_overlaps(attribute, values)
214
+ return push(Query.not_overlaps(attribute, values))
215
+ end
216
+
217
+ def touches(attribute, values)
218
+ return push(Query.touches(attribute, values))
219
+ end
220
+
221
+ def not_touches(attribute, values)
222
+ return push(Query.not_touches(attribute, values))
223
+ end
224
+
225
+ def count(attribute = '*', alias_name = '')
226
+ return push(Query.count(attribute, alias_name))
227
+ end
228
+
229
+ def count_distinct(attribute, alias_name = '')
230
+ return push(Query.count_distinct(attribute, alias_name))
231
+ end
232
+
233
+ def sum(attribute, alias_name = '')
234
+ return push(Query.sum(attribute, alias_name))
235
+ end
236
+
237
+ def avg(attribute, alias_name = '')
238
+ return push(Query.avg(attribute, alias_name))
239
+ end
240
+
241
+ def min(attribute, alias_name = '')
242
+ return push(Query.min(attribute, alias_name))
243
+ end
244
+
245
+ def max(attribute, alias_name = '')
246
+ return push(Query.max(attribute, alias_name))
247
+ end
248
+
249
+ def stddev(attribute, alias_name = '')
250
+ return push(Query.stddev(attribute, alias_name))
251
+ end
252
+
253
+ def stddev_pop(attribute, alias_name = '')
254
+ return push(Query.stddev_pop(attribute, alias_name))
255
+ end
256
+
257
+ def stddev_samp(attribute, alias_name = '')
258
+ return push(Query.stddev_samp(attribute, alias_name))
259
+ end
260
+
261
+ def variance(attribute, alias_name = '')
262
+ return push(Query.variance(attribute, alias_name))
263
+ end
264
+
265
+ def var_pop(attribute, alias_name = '')
266
+ return push(Query.var_pop(attribute, alias_name))
267
+ end
268
+
269
+ def var_samp(attribute, alias_name = '')
270
+ return push(Query.var_samp(attribute, alias_name))
271
+ end
272
+
273
+ def bit_and(attribute, alias_name = '')
274
+ return push(Query.bit_and(attribute, alias_name))
275
+ end
276
+
277
+ def bit_or(attribute, alias_name = '')
278
+ return push(Query.bit_or(attribute, alias_name))
279
+ end
280
+
281
+ def bit_xor(attribute, alias_name = '')
282
+ return push(Query.bit_xor(attribute, alias_name))
283
+ end
284
+
285
+ def group_by(attributes)
286
+ return push(Query.group_by(attributes))
287
+ end
288
+
289
+ def having(queries)
290
+ return push(Query.having(queries))
291
+ end
292
+
293
+ def distinct()
294
+ return push(Query.distinct())
295
+ end
296
+
297
+ def join(table, left, right = '', operator = '=', alias_name = '')
298
+ return push(Query.join(table, left, right, operator, alias_name))
299
+ end
300
+
301
+ def left_join(table, left, right = '', operator = '=', alias_name = '')
302
+ return push(Query.left_join(table, left, right, operator, alias_name))
303
+ end
304
+
305
+ def right_join(table, left, right = '', operator = '=', alias_name = '')
306
+ return push(Query.right_join(table, left, right, operator, alias_name))
307
+ end
308
+
309
+ def full_outer_join(table, left, right = '', operator = '=', alias_name = '')
310
+ return push(Query.full_outer_join(table, left, right, operator, alias_name))
311
+ end
312
+
313
+ def cross_join(table, alias_name = '')
314
+ return push(Query.cross_join(table, alias_name))
315
+ end
316
+
317
+ def vector_dot(attribute, vector)
318
+ return push(Query.vector_dot(attribute, vector))
319
+ end
320
+
321
+ def vector_cosine(attribute, vector)
322
+ return push(Query.vector_cosine(attribute, vector))
323
+ end
324
+
325
+ def vector_euclidean(attribute, vector)
326
+ return push(Query.vector_euclidean(attribute, vector))
327
+ end
328
+
329
+ def covers(attribute, values)
330
+ return push(Query.covers(attribute, values))
331
+ end
332
+
333
+ def not_covers(attribute, values)
334
+ return push(Query.not_covers(attribute, values))
335
+ end
336
+
337
+ def spatial_equals(attribute, values)
338
+ return push(Query.spatial_equals(attribute, values))
339
+ end
340
+
341
+ def not_spatial_equals(attribute, values)
342
+ return push(Query.not_spatial_equals(attribute, values))
343
+ end
344
+
345
+ def page(page, per_page = 25)
346
+ return push(Query.page(page, per_page))
347
+ end
348
+
349
+ private
350
+
351
+ def push(query)
352
+ if query.is_a?(Array)
353
+ @queries.concat(query)
354
+ else
355
+ @queries << query
356
+ end
357
+
358
+ return self
359
+ end
360
+ end
361
+ end
@@ -216,6 +216,15 @@ module Appwrite
216
216
  return Query.new("elemMatch", attribute, queries.map { |query| JSON.parse(query) }).to_s
217
217
  end
218
218
 
219
+ # Constrain populated related documents on a relationship attribute.
220
+ #
221
+ # @param attribute [String] The relationship attribute to query.
222
+ # @param queries [Array<String>] Filter, order, select, and pagination queries applied to related documents.
223
+ # @return [String] The query string.
224
+ def relationship(attribute, queries)
225
+ return Query.new("relationship", attribute, queries.map { |query| JSON.parse(query) }).to_s
226
+ end
227
+
219
228
  def distance_equal(attribute, values, distance, meters = true)
220
229
  return Query.new("distanceEqual", attribute, [[values, distance, meters]]).to_s
221
230
  end
@@ -275,6 +284,187 @@ module Appwrite
275
284
  def not_touches(attribute, values)
276
285
  return Query.new("notTouches", attribute, [values]).to_s
277
286
  end
287
+
288
+ def count(attribute = '*', alias_name = '')
289
+ return Query.new("count", attribute, alias_name != '' ? alias_name : nil).to_s
290
+ end
291
+
292
+ def count_distinct(attribute, alias_name = '')
293
+ return Query.new("countDistinct", attribute, alias_name != '' ? alias_name : nil).to_s
294
+ end
295
+
296
+ def sum(attribute, alias_name = '')
297
+ return Query.new("sum", attribute, alias_name != '' ? alias_name : nil).to_s
298
+ end
299
+
300
+ def avg(attribute, alias_name = '')
301
+ return Query.new("avg", attribute, alias_name != '' ? alias_name : nil).to_s
302
+ end
303
+
304
+ def min(attribute, alias_name = '')
305
+ return Query.new("min", attribute, alias_name != '' ? alias_name : nil).to_s
306
+ end
307
+
308
+ def max(attribute, alias_name = '')
309
+ return Query.new("max", attribute, alias_name != '' ? alias_name : nil).to_s
310
+ end
311
+
312
+ def stddev(attribute, alias_name = '')
313
+ return Query.new("stddev", attribute, alias_name != '' ? alias_name : nil).to_s
314
+ end
315
+
316
+ def stddev_pop(attribute, alias_name = '')
317
+ return Query.new("stddevPop", attribute, alias_name != '' ? alias_name : nil).to_s
318
+ end
319
+
320
+ def stddev_samp(attribute, alias_name = '')
321
+ return Query.new("stddevSamp", attribute, alias_name != '' ? alias_name : nil).to_s
322
+ end
323
+
324
+ def variance(attribute, alias_name = '')
325
+ return Query.new("variance", attribute, alias_name != '' ? alias_name : nil).to_s
326
+ end
327
+
328
+ def var_pop(attribute, alias_name = '')
329
+ return Query.new("varPop", attribute, alias_name != '' ? alias_name : nil).to_s
330
+ end
331
+
332
+ def var_samp(attribute, alias_name = '')
333
+ return Query.new("varSamp", attribute, alias_name != '' ? alias_name : nil).to_s
334
+ end
335
+
336
+ def bit_and(attribute, alias_name = '')
337
+ return Query.new("bitAnd", attribute, alias_name != '' ? alias_name : nil).to_s
338
+ end
339
+
340
+ def bit_or(attribute, alias_name = '')
341
+ return Query.new("bitOr", attribute, alias_name != '' ? alias_name : nil).to_s
342
+ end
343
+
344
+ def bit_xor(attribute, alias_name = '')
345
+ return Query.new("bitXor", attribute, alias_name != '' ? alias_name : nil).to_s
346
+ end
347
+
348
+ def group_by(attributes)
349
+ return Query.new("groupBy", nil, attributes).to_s
350
+ end
351
+
352
+ def having(queries)
353
+ return Query.new("having", nil, queries.map { |query| JSON.parse(query) }).to_s
354
+ end
355
+
356
+ def distinct()
357
+ return Query.new("distinct", nil, nil).to_s
358
+ end
359
+
360
+ def on(left, right, operator = '=')
361
+ return Query.new("on", nil, [left, operator, right]).to_s
362
+ end
363
+
364
+ def join(table, left, right = '', operator = '=', alias_name = '')
365
+ return create_join("join", table, left, right, operator, alias_name)
366
+ end
367
+
368
+ def left_join(table, left, right = '', operator = '=', alias_name = '')
369
+ return create_join("leftJoin", table, left, right, operator, alias_name)
370
+ end
371
+
372
+ def right_join(table, left, right = '', operator = '=', alias_name = '')
373
+ return create_join("rightJoin", table, left, right, operator, alias_name)
374
+ end
375
+
376
+ def full_outer_join(table, left, right = '', operator = '=', alias_name = '')
377
+ return create_join("fullOuterJoin", table, left, right, operator, alias_name)
378
+ end
379
+
380
+ def cross_join(table, alias_name = '')
381
+ return Query.new("crossJoin", table, alias_name != '' ? alias_name : nil).to_s
382
+ end
383
+
384
+ def covers(attribute, values)
385
+ return Query.new("covers", attribute, [values]).to_s
386
+ end
387
+
388
+ def not_covers(attribute, values)
389
+ return Query.new("notCovers", attribute, [values]).to_s
390
+ end
391
+
392
+ def spatial_equals(attribute, values)
393
+ return Query.new("spatialEquals", attribute, [values]).to_s
394
+ end
395
+
396
+ def not_spatial_equals(attribute, values)
397
+ return Query.new("notSpatialEquals", attribute, [values]).to_s
398
+ end
399
+
400
+ def page(page, per_page = 25)
401
+ if page < 1
402
+ raise ArgumentError, "Page must be >= 1, got #{page}"
403
+ end
404
+ if per_page < 1
405
+ raise ArgumentError, "Per page must be >= 1, got #{per_page}"
406
+ end
407
+
408
+ return [
409
+ limit(per_page),
410
+ offset((page - 1) * per_page),
411
+ ]
412
+ end
413
+
414
+ def builder
415
+ return Builder.new
416
+ end
417
+
418
+ def _flatten(value)
419
+ return value.build if value.is_a?(Builder)
420
+ return value.to_s if value.is_a?(Query)
421
+ return value unless value.is_a?(Array)
422
+
423
+ out = []
424
+ changed = false
425
+ value.each do |item|
426
+ flat = _flatten(item)
427
+ if item.is_a?(Builder) || item.is_a?(Query)
428
+ if flat.is_a?(Array)
429
+ out.concat(flat)
430
+ else
431
+ out << flat
432
+ end
433
+ changed = true
434
+ next
435
+ end
436
+ changed = true if flat != item
437
+ out << flat
438
+ end
439
+
440
+ changed ? out : value
441
+ end
442
+
443
+ private
444
+
445
+ def create_join(method, table, left, right, operator, alias_name)
446
+ return nested_join(method, table, '', left) if left.is_a?(Array)
447
+ return nested_join(method, table, left, right) if right.is_a?(Array)
448
+
449
+ return join_query(method, table, left, right, operator, alias_name)
450
+ end
451
+
452
+ def nested_join(method, table, alias_name, on)
453
+ values = []
454
+ values << alias_name if alias_name != ''
455
+ on.each { |query| values << JSON.parse(query) }
456
+
457
+ return Query.new(method, table, values).to_s
458
+ end
459
+
460
+ def join_query(method, table, left, right, operator, alias_name)
461
+ values = [left, operator, right]
462
+ values << alias_name if alias_name != ''
463
+
464
+ return Query.new(method, table, values).to_s
465
+ end
278
466
  end
279
467
  end
468
+
469
+ require_relative 'query/builder'
280
470
  end