appwrite 23.1.0 → 24.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/appwrite/client.rb +2 -2
  3. data/lib/appwrite/enums/o_auth2_google_prompt.rb +9 -0
  4. data/lib/appwrite/enums/o_auth_provider.rb +0 -2
  5. data/lib/appwrite/enums/{auth_method.rb → project_auth_method_id.rb} +1 -1
  6. data/lib/appwrite/enums/{email_template_type.rb → project_email_template_id.rb} +1 -1
  7. data/lib/appwrite/enums/{email_template_locale.rb → project_email_template_locale.rb} +1 -1
  8. data/lib/appwrite/enums/project_key_scopes.rb +100 -0
  9. data/lib/appwrite/enums/project_o_auth2_google_prompt.rb +9 -0
  10. data/lib/appwrite/enums/project_o_auth_provider_id.rb +51 -0
  11. data/lib/appwrite/enums/{project_policy.rb → project_policy_id.rb} +1 -1
  12. data/lib/appwrite/enums/{protocol_id.rb → project_protocol_id.rb} +1 -1
  13. data/lib/appwrite/enums/{service_id.rb → project_service_id.rb} +2 -1
  14. data/lib/appwrite/enums/{secure.rb → project_smtp_secure.rb} +1 -1
  15. data/lib/appwrite/enums/scopes.rb +7 -0
  16. data/lib/appwrite/models/database.rb +2 -2
  17. data/lib/appwrite/models/insight.rb +107 -0
  18. data/lib/appwrite/models/insight_cta.rb +42 -0
  19. data/lib/appwrite/models/insight_list.rb +32 -0
  20. data/lib/appwrite/models/o_auth2_google.rb +8 -3
  21. data/lib/appwrite/models/presence.rb +71 -0
  22. data/lib/appwrite/models/presence_list.rb +36 -0
  23. data/lib/appwrite/models/project.rb +15 -285
  24. data/lib/appwrite/models/project_auth_method.rb +53 -0
  25. data/lib/appwrite/models/project_protocol.rb +49 -0
  26. data/lib/appwrite/models/project_service.rb +64 -0
  27. data/lib/appwrite/models/report.rb +82 -0
  28. data/lib/appwrite/models/report_list.rb +32 -0
  29. data/lib/appwrite/models/usage_event.rb +72 -0
  30. data/lib/appwrite/models/usage_event_list.rb +32 -0
  31. data/lib/appwrite/models/usage_gauge.rb +37 -0
  32. data/lib/appwrite/models/usage_gauge_list.rb +32 -0
  33. data/lib/appwrite/services/advisor.rb +173 -0
  34. data/lib/appwrite/services/presences.rb +199 -0
  35. data/lib/appwrite/services/project.rb +170 -52
  36. data/lib/appwrite/services/usage.rb +86 -0
  37. data/lib/appwrite.rb +28 -8
  38. metadata +30 -10
  39. data/lib/appwrite/models/auth_provider.rb +0 -47
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd02865d4592c504a324c79a3ccea59c0ba3313fe92900258c345a04111e42be
4
- data.tar.gz: c2e32abf40d1d34cbddbfeb2b4d18cafae12078099415b4fb3187ab446ba104e
3
+ metadata.gz: 6fc94e994ef7c1ad6ee73ec5cfd0962b9f6ad5e020d1d63b4929576b2f537107
4
+ data.tar.gz: c7afebc270a37bd03556da60bac53461ac6e926789255e4f75c9edf5b8aa4832
5
5
  SHA512:
6
- metadata.gz: 43bc24286c2b16dc259a75ad951582904b362f5b82f78ad4dceaf5f886012dec71dd3f598637bd30dd4be279ada8db43ad9ab0a32731c95c7b9ead639490d099
7
- data.tar.gz: 9ca861d212fcdf5471ef71026337e447dd33025111e0693bb0b48b1e17b71a06bc78fd670b4d3fe91fac6d339975a20c289fec4f2c37515c3f23e6359fe8534d
6
+ metadata.gz: 8d39cf12337cbbb2cbf85cba6a877491cabd89203a9eee4c242f2c8e43dd7171eb013d61387364193fe6abaa08ccff39ddb3ddaacf8588a6bd35bd2ea817360c
7
+ data.tar.gz: ab5902fb36a74a473afb600177acfc17960501184bb7c4981eee94734a672d870f25a8cbf37472d106414fe58995acb8e34c0d3b8b3312da1708bcf2d78a655e
@@ -15,8 +15,8 @@ module Appwrite
15
15
  'x-sdk-name'=> 'Ruby',
16
16
  'x-sdk-platform'=> 'server',
17
17
  'x-sdk-language'=> 'ruby',
18
- 'x-sdk-version'=> '23.1.0',
19
- 'X-Appwrite-Response-Format' => '1.9.4'
18
+ 'x-sdk-version'=> '24.0.0',
19
+ 'X-Appwrite-Response-Format' => '1.9.5'
20
20
  }
21
21
  @endpoint = 'https://cloud.appwrite.io/v1'
22
22
  end
@@ -0,0 +1,9 @@
1
+ module Appwrite
2
+ module Enums
3
+ module OAuth2GooglePrompt
4
+ NONE = 'none'
5
+ CONSENT = 'consent'
6
+ SELECT_ACCOUNT = 'select_account'
7
+ end
8
+ end
9
+ end
@@ -44,8 +44,6 @@ module Appwrite
44
44
  YANDEX = 'yandex'
45
45
  ZOHO = 'zoho'
46
46
  ZOOM = 'zoom'
47
- GITHUBIMAGINE = 'githubImagine'
48
- GOOGLEIMAGINE = 'googleImagine'
49
47
  end
50
48
  end
51
49
  end
@@ -1,6 +1,6 @@
1
1
  module Appwrite
2
2
  module Enums
3
- module AuthMethod
3
+ module ProjectAuthMethodId
4
4
  EMAIL_PASSWORD = 'email-password'
5
5
  MAGIC_URL = 'magic-url'
6
6
  EMAIL_OTP = 'email-otp'
@@ -1,6 +1,6 @@
1
1
  module Appwrite
2
2
  module Enums
3
- module EmailTemplateType
3
+ module ProjectEmailTemplateId
4
4
  VERIFICATION = 'verification'
5
5
  MAGICSESSION = 'magicSession'
6
6
  RECOVERY = 'recovery'
@@ -1,6 +1,6 @@
1
1
  module Appwrite
2
2
  module Enums
3
- module EmailTemplateLocale
3
+ module ProjectEmailTemplateLocale
4
4
  AF = 'af'
5
5
  AR_AE = 'ar-ae'
6
6
  AR_BH = 'ar-bh'
@@ -0,0 +1,100 @@
1
+ module Appwrite
2
+ module Enums
3
+ module ProjectKeyScopes
4
+ PROJECT_READ = 'project.read'
5
+ PROJECT_WRITE = 'project.write'
6
+ KEYS_READ = 'keys.read'
7
+ KEYS_WRITE = 'keys.write'
8
+ PLATFORMS_READ = 'platforms.read'
9
+ PLATFORMS_WRITE = 'platforms.write'
10
+ MOCKS_READ = 'mocks.read'
11
+ MOCKS_WRITE = 'mocks.write'
12
+ POLICIES_READ = 'policies.read'
13
+ POLICIES_WRITE = 'policies.write'
14
+ PROJECT_POLICIES_READ = 'project.policies.read'
15
+ PROJECT_POLICIES_WRITE = 'project.policies.write'
16
+ TEMPLATES_READ = 'templates.read'
17
+ TEMPLATES_WRITE = 'templates.write'
18
+ OAUTH2_READ = 'oauth2.read'
19
+ OAUTH2_WRITE = 'oauth2.write'
20
+ USERS_READ = 'users.read'
21
+ USERS_WRITE = 'users.write'
22
+ SESSIONS_READ = 'sessions.read'
23
+ SESSIONS_WRITE = 'sessions.write'
24
+ TEAMS_READ = 'teams.read'
25
+ TEAMS_WRITE = 'teams.write'
26
+ DATABASES_READ = 'databases.read'
27
+ DATABASES_WRITE = 'databases.write'
28
+ TABLES_READ = 'tables.read'
29
+ TABLES_WRITE = 'tables.write'
30
+ COLUMNS_READ = 'columns.read'
31
+ COLUMNS_WRITE = 'columns.write'
32
+ INDEXES_READ = 'indexes.read'
33
+ INDEXES_WRITE = 'indexes.write'
34
+ ROWS_READ = 'rows.read'
35
+ ROWS_WRITE = 'rows.write'
36
+ COLLECTIONS_READ = 'collections.read'
37
+ COLLECTIONS_WRITE = 'collections.write'
38
+ ATTRIBUTES_READ = 'attributes.read'
39
+ ATTRIBUTES_WRITE = 'attributes.write'
40
+ DOCUMENTS_READ = 'documents.read'
41
+ DOCUMENTS_WRITE = 'documents.write'
42
+ BUCKETS_READ = 'buckets.read'
43
+ BUCKETS_WRITE = 'buckets.write'
44
+ FILES_READ = 'files.read'
45
+ FILES_WRITE = 'files.write'
46
+ TOKENS_READ = 'tokens.read'
47
+ TOKENS_WRITE = 'tokens.write'
48
+ FUNCTIONS_READ = 'functions.read'
49
+ FUNCTIONS_WRITE = 'functions.write'
50
+ EXECUTIONS_READ = 'executions.read'
51
+ EXECUTIONS_WRITE = 'executions.write'
52
+ EXECUTION_READ = 'execution.read'
53
+ EXECUTION_WRITE = 'execution.write'
54
+ SITES_READ = 'sites.read'
55
+ SITES_WRITE = 'sites.write'
56
+ LOG_READ = 'log.read'
57
+ LOG_WRITE = 'log.write'
58
+ PROVIDERS_READ = 'providers.read'
59
+ PROVIDERS_WRITE = 'providers.write'
60
+ TOPICS_READ = 'topics.read'
61
+ TOPICS_WRITE = 'topics.write'
62
+ SUBSCRIBERS_READ = 'subscribers.read'
63
+ SUBSCRIBERS_WRITE = 'subscribers.write'
64
+ TARGETS_READ = 'targets.read'
65
+ TARGETS_WRITE = 'targets.write'
66
+ MESSAGES_READ = 'messages.read'
67
+ MESSAGES_WRITE = 'messages.write'
68
+ RULES_READ = 'rules.read'
69
+ RULES_WRITE = 'rules.write'
70
+ WEBHOOKS_READ = 'webhooks.read'
71
+ WEBHOOKS_WRITE = 'webhooks.write'
72
+ LOCALE_READ = 'locale.read'
73
+ AVATARS_READ = 'avatars.read'
74
+ HEALTH_READ = 'health.read'
75
+ ASSISTANT_READ = 'assistant.read'
76
+ MIGRATIONS_READ = 'migrations.read'
77
+ MIGRATIONS_WRITE = 'migrations.write'
78
+ SCHEDULES_READ = 'schedules.read'
79
+ SCHEDULES_WRITE = 'schedules.write'
80
+ VCS_READ = 'vcs.read'
81
+ VCS_WRITE = 'vcs.write'
82
+ INSIGHTS_READ = 'insights.read'
83
+ INSIGHTS_WRITE = 'insights.write'
84
+ REPORTS_READ = 'reports.read'
85
+ REPORTS_WRITE = 'reports.write'
86
+ PRESENCES_READ = 'presences.read'
87
+ PRESENCES_WRITE = 'presences.write'
88
+ BACKUPS_POLICIES_READ = 'backups.policies.read'
89
+ BACKUPS_POLICIES_WRITE = 'backups.policies.write'
90
+ ARCHIVES_READ = 'archives.read'
91
+ ARCHIVES_WRITE = 'archives.write'
92
+ RESTORATIONS_READ = 'restorations.read'
93
+ RESTORATIONS_WRITE = 'restorations.write'
94
+ DOMAINS_READ = 'domains.read'
95
+ DOMAINS_WRITE = 'domains.write'
96
+ EVENTS_READ = 'events.read'
97
+ USAGE_READ = 'usage.read'
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,9 @@
1
+ module Appwrite
2
+ module Enums
3
+ module ProjectOAuth2GooglePrompt
4
+ NONE = 'none'
5
+ CONSENT = 'consent'
6
+ SELECT_ACCOUNT = 'select_account'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,51 @@
1
+ module Appwrite
2
+ module Enums
3
+ module ProjectOAuthProviderId
4
+ AMAZON = 'amazon'
5
+ APPLE = 'apple'
6
+ AUTH0 = 'auth0'
7
+ AUTHENTIK = 'authentik'
8
+ AUTODESK = 'autodesk'
9
+ BITBUCKET = 'bitbucket'
10
+ BITLY = 'bitly'
11
+ BOX = 'box'
12
+ DAILYMOTION = 'dailymotion'
13
+ DISCORD = 'discord'
14
+ DISQUS = 'disqus'
15
+ DROPBOX = 'dropbox'
16
+ ETSY = 'etsy'
17
+ FACEBOOK = 'facebook'
18
+ FIGMA = 'figma'
19
+ FUSIONAUTH = 'fusionauth'
20
+ GITHUB = 'github'
21
+ GITLAB = 'gitlab'
22
+ GOOGLE = 'google'
23
+ KEYCLOAK = 'keycloak'
24
+ KICK = 'kick'
25
+ LINKEDIN = 'linkedin'
26
+ MICROSOFT = 'microsoft'
27
+ NOTION = 'notion'
28
+ OIDC = 'oidc'
29
+ OKTA = 'okta'
30
+ PAYPAL = 'paypal'
31
+ PAYPALSANDBOX = 'paypalSandbox'
32
+ PODIO = 'podio'
33
+ SALESFORCE = 'salesforce'
34
+ SLACK = 'slack'
35
+ SPOTIFY = 'spotify'
36
+ STRIPE = 'stripe'
37
+ TRADESHIFT = 'tradeshift'
38
+ TRADESHIFTBOX = 'tradeshiftBox'
39
+ TWITCH = 'twitch'
40
+ WORDPRESS = 'wordpress'
41
+ X = 'x'
42
+ YAHOO = 'yahoo'
43
+ YAMMER = 'yammer'
44
+ YANDEX = 'yandex'
45
+ ZOHO = 'zoho'
46
+ ZOOM = 'zoom'
47
+ GITHUBIMAGINE = 'githubImagine'
48
+ GOOGLEIMAGINE = 'googleImagine'
49
+ end
50
+ end
51
+ end
@@ -1,6 +1,6 @@
1
1
  module Appwrite
2
2
  module Enums
3
- module ProjectPolicy
3
+ module ProjectPolicyId
4
4
  PASSWORD_DICTIONARY = 'password-dictionary'
5
5
  PASSWORD_HISTORY = 'password-history'
6
6
  PASSWORD_PERSONAL_DATA = 'password-personal-data'
@@ -1,6 +1,6 @@
1
1
  module Appwrite
2
2
  module Enums
3
- module ProtocolId
3
+ module ProjectProtocolId
4
4
  REST = 'rest'
5
5
  GRAPHQL = 'graphql'
6
6
  WEBSOCKET = 'websocket'
@@ -1,6 +1,6 @@
1
1
  module Appwrite
2
2
  module Enums
3
- module ServiceId
3
+ module ProjectServiceId
4
4
  ACCOUNT = 'account'
5
5
  AVATARS = 'avatars'
6
6
  DATABASES = 'databases'
@@ -18,6 +18,7 @@ module Appwrite
18
18
  GRAPHQL = 'graphql'
19
19
  MIGRATIONS = 'migrations'
20
20
  MESSAGING = 'messaging'
21
+ ADVISOR = 'advisor'
21
22
  end
22
23
  end
23
24
  end
@@ -1,6 +1,6 @@
1
1
  module Appwrite
2
2
  module Enums
3
- module Secure
3
+ module ProjectSMTPSecure
4
4
  TLS = 'tls'
5
5
  SSL = 'ssl'
6
6
  end
@@ -79,6 +79,12 @@ module Appwrite
79
79
  SCHEDULES_WRITE = 'schedules.write'
80
80
  VCS_READ = 'vcs.read'
81
81
  VCS_WRITE = 'vcs.write'
82
+ INSIGHTS_READ = 'insights.read'
83
+ INSIGHTS_WRITE = 'insights.write'
84
+ REPORTS_READ = 'reports.read'
85
+ REPORTS_WRITE = 'reports.write'
86
+ PRESENCES_READ = 'presences.read'
87
+ PRESENCES_WRITE = 'presences.write'
82
88
  BACKUPS_POLICIES_READ = 'backups.policies.read'
83
89
  BACKUPS_POLICIES_WRITE = 'backups.policies.write'
84
90
  ARCHIVES_READ = 'archives.read'
@@ -88,6 +94,7 @@ module Appwrite
88
94
  DOMAINS_READ = 'domains.read'
89
95
  DOMAINS_WRITE = 'domains.write'
90
96
  EVENTS_READ = 'events.read'
97
+ USAGE_READ = 'usage.read'
91
98
  end
92
99
  end
93
100
  end
@@ -40,8 +40,8 @@ module Appwrite
40
40
  updated_at: map["$updatedAt"],
41
41
  enabled: map["enabled"],
42
42
  type: map["type"],
43
- policies: map["policies"].map { |it| Index.from(map: it) },
44
- archives: map["archives"].map { |it| Collection.from(map: it) }
43
+ policies: map["policies"].map { |it| BackupPolicy.from(map: it) },
44
+ archives: map["archives"].map { |it| BackupArchive.from(map: it) }
45
45
  )
46
46
  end
47
47
 
@@ -0,0 +1,107 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class Insight
6
+ attr_reader :id
7
+ attr_reader :created_at
8
+ attr_reader :updated_at
9
+ attr_reader :report_id
10
+ attr_reader :type
11
+ attr_reader :severity
12
+ attr_reader :status
13
+ attr_reader :resource_type
14
+ attr_reader :resource_id
15
+ attr_reader :parent_resource_type
16
+ attr_reader :parent_resource_id
17
+ attr_reader :title
18
+ attr_reader :summary
19
+ attr_reader :ctas
20
+ attr_reader :analyzed_at
21
+ attr_reader :dismissed_at
22
+ attr_reader :dismissed_by
23
+
24
+ def initialize(
25
+ id:,
26
+ created_at:,
27
+ updated_at:,
28
+ report_id:,
29
+ type:,
30
+ severity:,
31
+ status:,
32
+ resource_type:,
33
+ resource_id:,
34
+ parent_resource_type:,
35
+ parent_resource_id:,
36
+ title:,
37
+ summary:,
38
+ ctas:,
39
+ analyzed_at: ,
40
+ dismissed_at: ,
41
+ dismissed_by:
42
+ )
43
+ @id = id
44
+ @created_at = created_at
45
+ @updated_at = updated_at
46
+ @report_id = report_id
47
+ @type = type
48
+ @severity = severity
49
+ @status = status
50
+ @resource_type = resource_type
51
+ @resource_id = resource_id
52
+ @parent_resource_type = parent_resource_type
53
+ @parent_resource_id = parent_resource_id
54
+ @title = title
55
+ @summary = summary
56
+ @ctas = ctas
57
+ @analyzed_at = analyzed_at
58
+ @dismissed_at = dismissed_at
59
+ @dismissed_by = dismissed_by
60
+ end
61
+
62
+ def self.from(map:)
63
+ Insight.new(
64
+ id: map["$id"],
65
+ created_at: map["$createdAt"],
66
+ updated_at: map["$updatedAt"],
67
+ report_id: map["reportId"],
68
+ type: map["type"],
69
+ severity: map["severity"],
70
+ status: map["status"],
71
+ resource_type: map["resourceType"],
72
+ resource_id: map["resourceId"],
73
+ parent_resource_type: map["parentResourceType"],
74
+ parent_resource_id: map["parentResourceId"],
75
+ title: map["title"],
76
+ summary: map["summary"],
77
+ ctas: map["ctas"].map { |it| InsightCTA.from(map: it) },
78
+ analyzed_at: map["analyzedAt"],
79
+ dismissed_at: map["dismissedAt"],
80
+ dismissed_by: map["dismissedBy"]
81
+ )
82
+ end
83
+
84
+ def to_map
85
+ {
86
+ "$id": @id,
87
+ "$createdAt": @created_at,
88
+ "$updatedAt": @updated_at,
89
+ "reportId": @report_id,
90
+ "type": @type,
91
+ "severity": @severity,
92
+ "status": @status,
93
+ "resourceType": @resource_type,
94
+ "resourceId": @resource_id,
95
+ "parentResourceType": @parent_resource_type,
96
+ "parentResourceId": @parent_resource_id,
97
+ "title": @title,
98
+ "summary": @summary,
99
+ "ctas": @ctas.map { |it| it.to_map },
100
+ "analyzedAt": @analyzed_at,
101
+ "dismissedAt": @dismissed_at,
102
+ "dismissedBy": @dismissed_by
103
+ }
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,42 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class InsightCTA
6
+ attr_reader :label
7
+ attr_reader :service
8
+ attr_reader :method
9
+ attr_reader :params
10
+
11
+ def initialize(
12
+ label:,
13
+ service:,
14
+ method:,
15
+ params:
16
+ )
17
+ @label = label
18
+ @service = service
19
+ @method = method
20
+ @params = params
21
+ end
22
+
23
+ def self.from(map:)
24
+ InsightCTA.new(
25
+ label: map["label"],
26
+ service: map["service"],
27
+ method: map["method"],
28
+ params: map["params"]
29
+ )
30
+ end
31
+
32
+ def to_map
33
+ {
34
+ "label": @label,
35
+ "service": @service,
36
+ "method": @method,
37
+ "params": @params
38
+ }
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,32 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class InsightList
6
+ attr_reader :total
7
+ attr_reader :insights
8
+
9
+ def initialize(
10
+ total:,
11
+ insights:
12
+ )
13
+ @total = total
14
+ @insights = insights
15
+ end
16
+
17
+ def self.from(map:)
18
+ InsightList.new(
19
+ total: map["total"],
20
+ insights: map["insights"].map { |it| Insight.from(map: it) }
21
+ )
22
+ end
23
+
24
+ def to_map
25
+ {
26
+ "total": @total,
27
+ "insights": @insights.map { |it| it.to_map }
28
+ }
29
+ end
30
+ end
31
+ end
32
+ end
@@ -7,17 +7,20 @@ module Appwrite
7
7
  attr_reader :enabled
8
8
  attr_reader :client_id
9
9
  attr_reader :client_secret
10
+ attr_reader :prompt
10
11
 
11
12
  def initialize(
12
13
  id:,
13
14
  enabled:,
14
15
  client_id:,
15
- client_secret:
16
+ client_secret:,
17
+ prompt:
16
18
  )
17
19
  @id = id
18
20
  @enabled = enabled
19
21
  @client_id = client_id
20
22
  @client_secret = client_secret
23
+ @prompt = prompt
21
24
  end
22
25
 
23
26
  def self.from(map:)
@@ -25,7 +28,8 @@ module Appwrite
25
28
  id: map["$id"],
26
29
  enabled: map["enabled"],
27
30
  client_id: map["clientId"],
28
- client_secret: map["clientSecret"]
31
+ client_secret: map["clientSecret"],
32
+ prompt: map["prompt"]
29
33
  )
30
34
  end
31
35
 
@@ -34,7 +38,8 @@ module Appwrite
34
38
  "$id": @id,
35
39
  "enabled": @enabled,
36
40
  "clientId": @client_id,
37
- "clientSecret": @client_secret
41
+ "clientSecret": @client_secret,
42
+ "prompt": @prompt
38
43
  }
39
44
  end
40
45
  end
@@ -0,0 +1,71 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class Presence
6
+ attr_reader :id
7
+ attr_reader :created_at
8
+ attr_reader :updated_at
9
+ attr_reader :permissions
10
+ attr_reader :user_id
11
+ attr_reader :status
12
+ attr_reader :source
13
+ attr_reader :expires_at
14
+ attr_reader :metadata
15
+
16
+ def initialize(
17
+ id:,
18
+ created_at:,
19
+ updated_at:,
20
+ permissions:,
21
+ user_id:,
22
+ status: ,
23
+ source:,
24
+ expires_at: ,
25
+ metadata:
26
+ )
27
+ @id = id
28
+ @created_at = created_at
29
+ @updated_at = updated_at
30
+ @permissions = permissions
31
+ @user_id = user_id
32
+ @status = status
33
+ @source = source
34
+ @expires_at = expires_at
35
+ @metadata = metadata
36
+ end
37
+
38
+ def self.from(map:)
39
+ Presence.new(
40
+ id: map["$id"],
41
+ created_at: map["$createdAt"],
42
+ updated_at: map["$updatedAt"],
43
+ permissions: map["$permissions"],
44
+ user_id: map["userId"],
45
+ status: map["status"],
46
+ source: map["source"],
47
+ expires_at: map["expiresAt"],
48
+ metadata: map["metadata"] || map
49
+ )
50
+ end
51
+
52
+ def to_map
53
+ {
54
+ "$id": @id,
55
+ "$createdAt": @created_at,
56
+ "$updatedAt": @updated_at,
57
+ "$permissions": @permissions,
58
+ "userId": @user_id,
59
+ "status": @status,
60
+ "source": @source,
61
+ "expiresAt": @expires_at,
62
+ "metadata": @metadata
63
+ }
64
+ end
65
+
66
+ def convert_to(from_json)
67
+ from_json.call(metadata)
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,36 @@
1
+ #frozen_string_literal: true
2
+
3
+ module Appwrite
4
+ module Models
5
+ class PresenceList
6
+ attr_reader :total
7
+ attr_reader :presences
8
+
9
+ def initialize(
10
+ total:,
11
+ presences:
12
+ )
13
+ @total = total
14
+ @presences = presences
15
+ end
16
+
17
+ def self.from(map:)
18
+ PresenceList.new(
19
+ total: map["total"],
20
+ presences: map["presences"].map { |it| Presence.from(map: it) }
21
+ )
22
+ end
23
+
24
+ def to_map
25
+ {
26
+ "total": @total,
27
+ "presences": @presences.map { |it| it.to_map }
28
+ }
29
+ end
30
+
31
+ def convert_to(from_json)
32
+ presences.map { |it| it.convert_to(from_json) }
33
+ end
34
+ end
35
+ end
36
+ end