easyfire 0.0.1
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.
- checksums.yaml +7 -0
- data/.byebug_history +256 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +43 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/easyfire +5 -0
- data/bin/setup +8 -0
- data/easyfire.gemspec +40 -0
- data/lib/easyfire/cli.rb +23 -0
- data/lib/easyfire/easyfire_model.rb +140 -0
- data/lib/easyfire/renders/helpers.rb +68 -0
- data/lib/easyfire/renders/model.rb +32 -0
- data/lib/easyfire/renders/service.rb +30 -0
- data/lib/easyfire/renders/templates/model.java.erb +220 -0
- data/lib/easyfire/renders/templates/model.swift.erb +62 -0
- data/lib/easyfire/renders/templates/service.java.erb +43 -0
- data/lib/easyfire/renders/templates/service.swift.erb +92 -0
- data/lib/easyfire/renders.rb +7 -0
- data/lib/easyfire/thor/android/build.gradle.tt +100 -0
- data/lib/easyfire/thor/android/build.sbt.tt +17 -0
- data/lib/easyfire/thor/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/lib/easyfire/thor/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/lib/easyfire/thor/android/gradle.properties +2 -0
- data/lib/easyfire/thor/android/gradlew +160 -0
- data/lib/easyfire/thor/android/gradlew.bat +90 -0
- data/lib/easyfire/thor/android/pom.xml.tt +76 -0
- data/lib/easyfire/thor/android/settings.gradle.tt +1 -0
- data/lib/easyfire/thor/android/src/main/AndroidManifest.xml.tt +3 -0
- data/lib/easyfire/thor/android.rb +56 -0
- data/lib/easyfire/thor/android_helper/EasyfireDelegate.java.tt +10 -0
- data/lib/easyfire/thor/android_helper/EasyfireListDelegate.java.tt +11 -0
- data/lib/easyfire/thor/android_helper/ModelEF.java.tt +10 -0
- data/lib/easyfire/thor/android_helper/ServiceEF.java.tt +370 -0
- data/lib/easyfire/version.rb +3 -0
- data/lib/easyfire.rb +22 -0
- metadata +170 -0
@@ -0,0 +1,370 @@
|
|
1
|
+
package <%=@group%>.<%=@artifact%>.base;
|
2
|
+
|
3
|
+
import android.support.annotation.NonNull;
|
4
|
+
|
5
|
+
import com.google.android.gms.tasks.OnCompleteListener;
|
6
|
+
import com.google.android.gms.tasks.OnFailureListener;
|
7
|
+
import com.google.android.gms.tasks.Task;
|
8
|
+
import com.google.firebase.database.ChildEventListener;
|
9
|
+
import com.google.firebase.database.DataSnapshot;
|
10
|
+
import com.google.firebase.database.DatabaseError;
|
11
|
+
import com.google.firebase.database.DatabaseReference;
|
12
|
+
import com.google.firebase.database.ValueEventListener;
|
13
|
+
|
14
|
+
public abstract class ServiceEF<T extends ModelEF> {
|
15
|
+
|
16
|
+
private ChildEventListener childEventListener;
|
17
|
+
private DatabaseReference childListenerRef;
|
18
|
+
private ValueEventListener valueEventListener;
|
19
|
+
private DatabaseReference valueListenerRef;
|
20
|
+
private DatabaseReference trackingRef;
|
21
|
+
private ValueEventListener trackingValueListener;
|
22
|
+
private EasyfireListDelegate paginateDelegate;
|
23
|
+
private ChildEventListener firstPageChildEventListener;
|
24
|
+
private String oldestKeyYouveSeen;
|
25
|
+
private DatabaseReference childPaginateListenerRef;
|
26
|
+
|
27
|
+
public abstract DatabaseReference getRef();
|
28
|
+
protected abstract Class<T> getRuntimeClass();
|
29
|
+
|
30
|
+
public void retrieve(final String key, final EasyfireDelegate<T> delegate, String... parentKeys){
|
31
|
+
DatabaseReference localRef = getRef();
|
32
|
+
|
33
|
+
for(String parentKey : parentKeys){
|
34
|
+
localRef = localRef.child(parentKey);
|
35
|
+
}
|
36
|
+
|
37
|
+
localRef.child(key);
|
38
|
+
findByPath(delegate, localRef);
|
39
|
+
}
|
40
|
+
|
41
|
+
public void retrieve(final String path, final EasyfireDelegate<T> delegate){
|
42
|
+
DatabaseReference localRef = getRef();
|
43
|
+
|
44
|
+
localRef.child(path);
|
45
|
+
findByPath(delegate, localRef);
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
private void findByPath(final EasyfireDelegate<T> delegate, DatabaseReference localRef) {
|
50
|
+
localRef.addListenerForSingleValueEvent(new ValueEventListener() {
|
51
|
+
|
52
|
+
@Override
|
53
|
+
public void onDataChange(DataSnapshot dataSnapshot) {
|
54
|
+
if (dataSnapshot.exists()) {
|
55
|
+
|
56
|
+
T t = dataSnapshot.getValue(getRuntimeClass());
|
57
|
+
t.setKey(dataSnapshot.getKey());
|
58
|
+
delegate.changed(t);
|
59
|
+
} else {
|
60
|
+
delegate.changed(null);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
@Override
|
65
|
+
public void onCancelled(DatabaseError databaseError) {
|
66
|
+
delegate.error(databaseError);
|
67
|
+
}
|
68
|
+
});
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
public void store(final T t,
|
73
|
+
final EasyfireDelegate<T> delegate) {
|
74
|
+
|
75
|
+
DatabaseReference localRef = getRef();
|
76
|
+
for(Object parentKey: t.getParentKeys()){
|
77
|
+
localRef = localRef.child(parentKey.toString());
|
78
|
+
}
|
79
|
+
|
80
|
+
if (t.getKey() == null) {
|
81
|
+
localRef = localRef.push();
|
82
|
+
} else {
|
83
|
+
localRef = localRef.child(t.getKey());
|
84
|
+
}
|
85
|
+
t.setKey(localRef.getKey());
|
86
|
+
|
87
|
+
Task<Void> task = localRef.setValue(t);
|
88
|
+
task.addOnCompleteListener(new OnCompleteListener<Void>() {
|
89
|
+
@Override
|
90
|
+
public void onComplete(@NonNull Task<Void> task) {
|
91
|
+
delegate.changed(t);
|
92
|
+
}
|
93
|
+
}).addOnFailureListener(new OnFailureListener() {
|
94
|
+
@Override
|
95
|
+
public void onFailure(@NonNull Exception e) {
|
96
|
+
delegate.error(e);
|
97
|
+
}
|
98
|
+
});
|
99
|
+
}
|
100
|
+
|
101
|
+
public void delete(final T t, final EasyfireDelegate<Boolean> delegate) {
|
102
|
+
Task<Void> task;
|
103
|
+
|
104
|
+
DatabaseReference localRef =getRef();
|
105
|
+
|
106
|
+
for(Object parentKey: t.getParentKeys()){
|
107
|
+
localRef = localRef.child(parentKey.toString());
|
108
|
+
}
|
109
|
+
|
110
|
+
task = localRef.child(t.getKey()).removeValue();
|
111
|
+
|
112
|
+
task.addOnCompleteListener(new OnCompleteListener<Void>() {
|
113
|
+
@Override
|
114
|
+
public void onComplete(@NonNull Task<Void> task) {
|
115
|
+
delegate.changed(true);
|
116
|
+
}
|
117
|
+
}).addOnFailureListener(new OnFailureListener() {
|
118
|
+
@Override
|
119
|
+
public void onFailure(@NonNull Exception e) {
|
120
|
+
delegate.error(e);
|
121
|
+
}
|
122
|
+
});
|
123
|
+
}
|
124
|
+
|
125
|
+
public void observeValue(final EasyfireListDelegate delegate,String... parentKeys) {
|
126
|
+
|
127
|
+
valueEventListener = new ValueEventListener(){
|
128
|
+
|
129
|
+
@Override
|
130
|
+
public void onDataChange(DataSnapshot dataSnapshot) {
|
131
|
+
if(dataSnapshot.exists()){
|
132
|
+
T t = dataSnapshot.getValue(getRuntimeClass());
|
133
|
+
t.setKey(dataSnapshot.getKey());
|
134
|
+
delegate.added(t);
|
135
|
+
}
|
136
|
+
}
|
137
|
+
|
138
|
+
@Override
|
139
|
+
public void onCancelled(DatabaseError databaseError) {
|
140
|
+
delegate.onError(databaseError);
|
141
|
+
}
|
142
|
+
};
|
143
|
+
|
144
|
+
this.valueListenerRef = getRef();
|
145
|
+
for(String parentKey: parentKeys){
|
146
|
+
this.valueListenerRef = valueListenerRef.child(parentKey);
|
147
|
+
}
|
148
|
+
this.valueListenerRef.addValueEventListener(valueEventListener);
|
149
|
+
|
150
|
+
|
151
|
+
}
|
152
|
+
|
153
|
+
public void removeValueObserve() {
|
154
|
+
|
155
|
+
if(valueEventListener != null && this.valueListenerRef != null){
|
156
|
+
this.valueListenerRef.removeEventListener(valueEventListener);
|
157
|
+
}
|
158
|
+
}
|
159
|
+
|
160
|
+
|
161
|
+
public void observeChild(final EasyfireListDelegate<T> delegate,String... parentKeys) {
|
162
|
+
|
163
|
+
childEventListener = new ChildEventListener() {
|
164
|
+
|
165
|
+
@Override
|
166
|
+
public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
|
167
|
+
|
168
|
+
if (dataSnapshot.exists()) {
|
169
|
+
T t = dataSnapshot.getValue(getRuntimeClass());
|
170
|
+
t.setKey(dataSnapshot.getKey());
|
171
|
+
delegate.added(t);
|
172
|
+
}
|
173
|
+
|
174
|
+
}
|
175
|
+
|
176
|
+
@Override
|
177
|
+
public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
|
178
|
+
if (dataSnapshot.exists()) {
|
179
|
+
T t = dataSnapshot.getValue(getRuntimeClass());
|
180
|
+
if (t != null) {
|
181
|
+
t.setKey(dataSnapshot.getKey());
|
182
|
+
|
183
|
+
delegate.changed(t);
|
184
|
+
}
|
185
|
+
}
|
186
|
+
}
|
187
|
+
|
188
|
+
@Override
|
189
|
+
public void onChildRemoved(DataSnapshot dataSnapshot) {
|
190
|
+
delegate.removed(createInstanceWithKey(dataSnapshot.getKey()));
|
191
|
+
}
|
192
|
+
|
193
|
+
@Override
|
194
|
+
public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
|
195
|
+
if (dataSnapshot.exists()) {
|
196
|
+
T t = dataSnapshot.getValue(getRuntimeClass());
|
197
|
+
if (t != null) {
|
198
|
+
t.setKey(dataSnapshot.getKey());
|
199
|
+
|
200
|
+
delegate.moved(t);
|
201
|
+
}
|
202
|
+
}
|
203
|
+
}
|
204
|
+
|
205
|
+
|
206
|
+
@Override
|
207
|
+
public void onCancelled(DatabaseError databaseError) {
|
208
|
+
delegate.onError(databaseError);
|
209
|
+
}
|
210
|
+
};
|
211
|
+
|
212
|
+
this.childListenerRef = getRef();
|
213
|
+
|
214
|
+
for(String parentKey: parentKeys){
|
215
|
+
this.childListenerRef = childListenerRef.child(parentKey);
|
216
|
+
}
|
217
|
+
this.childListenerRef.addChildEventListener(childEventListener);
|
218
|
+
|
219
|
+
}
|
220
|
+
|
221
|
+
public void removeChildObserve() {
|
222
|
+
|
223
|
+
if(childEventListener != null && this.childListenerRef != null){
|
224
|
+
this.childListenerRef.removeEventListener(childEventListener);
|
225
|
+
}
|
226
|
+
}
|
227
|
+
public abstract T createInstanceWithKey(String key);
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
public void startTracking(final String path, final EasyfireListDelegate delegate){
|
232
|
+
this.trackingRef = getRef();
|
233
|
+
this.trackingRef = this.trackingRef.child(path);
|
234
|
+
trackingValueListener = new ValueEventListener(){
|
235
|
+
|
236
|
+
@Override
|
237
|
+
public void onDataChange(DataSnapshot dataSnapshot) {
|
238
|
+
if(dataSnapshot.exists()){
|
239
|
+
T t = dataSnapshot.getValue(getRuntimeClass());
|
240
|
+
t.setKey(dataSnapshot.getKey());
|
241
|
+
delegate.changed(t);
|
242
|
+
}else{
|
243
|
+
T t = dataSnapshot.getValue(getRuntimeClass());
|
244
|
+
t.setKey(dataSnapshot.getKey());
|
245
|
+
delegate.removed(createInstanceWithKey(dataSnapshot.getKey()));
|
246
|
+
}
|
247
|
+
}
|
248
|
+
|
249
|
+
@Override
|
250
|
+
public void onCancelled(DatabaseError databaseError) {
|
251
|
+
delegate.onError(databaseError);
|
252
|
+
}
|
253
|
+
};
|
254
|
+
|
255
|
+
this.trackingRef.addValueEventListener(trackingValueListener);
|
256
|
+
|
257
|
+
}
|
258
|
+
|
259
|
+
public void stopTracking(){
|
260
|
+
if(this.trackingRef != null && this.trackingValueListener != null) {
|
261
|
+
this.trackingRef.removeEventListener(trackingValueListener);
|
262
|
+
}
|
263
|
+
}
|
264
|
+
|
265
|
+
|
266
|
+
public void startPagination(final EasyfireListDelegate delegate,int pageSize, String... parentKeys) {
|
267
|
+
this.paginateDelegate = delegate;
|
268
|
+
this.firstPageChildEventListener = createPaginateChildEventListener();
|
269
|
+
oldestKeyYouveSeen = null;
|
270
|
+
|
271
|
+
this.childPaginateListenerRef = getRef();
|
272
|
+
|
273
|
+
for(String parentKey: parentKeys){
|
274
|
+
this.childPaginateListenerRef = childPaginateListenerRef.child(parentKey);
|
275
|
+
}
|
276
|
+
|
277
|
+
this.childPaginateListenerRef.limitToLast(pageSize).addChildEventListener(firstPageChildEventListener);
|
278
|
+
}
|
279
|
+
|
280
|
+
public void nextPage(int pageSize) {
|
281
|
+
String start = oldestKeyYouveSeen;
|
282
|
+
oldestKeyYouveSeen = null;
|
283
|
+
|
284
|
+
this.childPaginateListenerRef.orderByKey().endAt(start).limitToLast(pageSize).addListenerForSingleValueEvent(new ValueEventListener() {
|
285
|
+
@Override
|
286
|
+
public void onDataChange(DataSnapshot dataSnapshot) {
|
287
|
+
if(dataSnapshot.getChildrenCount() > 0) {
|
288
|
+
for (DataSnapshot child : dataSnapshot.getChildren()) {
|
289
|
+
if (oldestKeyYouveSeen == null) {
|
290
|
+
oldestKeyYouveSeen = child.getKey();
|
291
|
+
}
|
292
|
+
T t = child.getValue(getRuntimeClass());
|
293
|
+
t.setKey(child.getKey());
|
294
|
+
paginateDelegate.added(t);
|
295
|
+
}
|
296
|
+
}else{
|
297
|
+
paginateDelegate.done();
|
298
|
+
}
|
299
|
+
}
|
300
|
+
|
301
|
+
@Override
|
302
|
+
public void onCancelled(DatabaseError databaseError) {
|
303
|
+
paginateDelegate.onError(databaseError);
|
304
|
+
}
|
305
|
+
});
|
306
|
+
|
307
|
+
}
|
308
|
+
|
309
|
+
|
310
|
+
private ChildEventListener createPaginateChildEventListener() {
|
311
|
+
return new ChildEventListener() {
|
312
|
+
@Override
|
313
|
+
public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
|
314
|
+
|
315
|
+
if (dataSnapshot.exists()) {
|
316
|
+
if (oldestKeyYouveSeen == null) {
|
317
|
+
oldestKeyYouveSeen = dataSnapshot.getKey();
|
318
|
+
}
|
319
|
+
T t = dataSnapshot.getValue(getRuntimeClass());
|
320
|
+
t.setKey(dataSnapshot.getKey());
|
321
|
+
paginateDelegate.added(t);
|
322
|
+
}
|
323
|
+
|
324
|
+
}
|
325
|
+
|
326
|
+
@Override
|
327
|
+
public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
|
328
|
+
if (dataSnapshot.exists()) {
|
329
|
+
|
330
|
+
if (oldestKeyYouveSeen == null) {
|
331
|
+
oldestKeyYouveSeen = dataSnapshot.getKey();
|
332
|
+
}
|
333
|
+
T t = dataSnapshot.getValue(getRuntimeClass());
|
334
|
+
t.setKey(dataSnapshot.getKey());
|
335
|
+
paginateDelegate.added(t);
|
336
|
+
}
|
337
|
+
}
|
338
|
+
|
339
|
+
@Override
|
340
|
+
public void onChildRemoved(DataSnapshot dataSnapshot) {
|
341
|
+
T t = createInstanceWithKey(dataSnapshot.getKey());
|
342
|
+
paginateDelegate.removed(t);
|
343
|
+
}
|
344
|
+
|
345
|
+
@Override
|
346
|
+
public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
|
347
|
+
if (dataSnapshot.exists()) {
|
348
|
+
|
349
|
+
if (oldestKeyYouveSeen == null) {
|
350
|
+
oldestKeyYouveSeen = dataSnapshot.getKey();
|
351
|
+
}
|
352
|
+
T t = dataSnapshot.getValue(getRuntimeClass());
|
353
|
+
t.setKey(dataSnapshot.getKey());
|
354
|
+
paginateDelegate.moved(t);
|
355
|
+
}
|
356
|
+
}
|
357
|
+
|
358
|
+
|
359
|
+
@Override
|
360
|
+
public void onCancelled(DatabaseError databaseError) {
|
361
|
+
paginateDelegate.onError(databaseError);
|
362
|
+
}
|
363
|
+
};
|
364
|
+
|
365
|
+
}
|
366
|
+
|
367
|
+
|
368
|
+
|
369
|
+
|
370
|
+
}
|
data/lib/easyfire.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
require 'active_support/core_ext'
|
3
|
+
require "easyfire/version"
|
4
|
+
require 'easyfire/easyfire_model'
|
5
|
+
|
6
|
+
require "easyfire/renders"
|
7
|
+
require "easyfire/renders/helpers"
|
8
|
+
require 'easyfire/renders/model'
|
9
|
+
require 'easyfire/renders/service'
|
10
|
+
require 'erb'
|
11
|
+
require "easyfire/thor/android"
|
12
|
+
require "easyfire/cli"
|
13
|
+
|
14
|
+
class String
|
15
|
+
def uncapitalize
|
16
|
+
self[0, 1].downcase + self[1..-1]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
module Easyfire
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,170 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: easyfire
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rodrigo Sol
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-09-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.15'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.15'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.2'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: byebug
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: |-
|
98
|
+
This gem provides an abstraction layer to define Firebase Realtime Database models and basic services.
|
99
|
+
Once the model was defined you can generate a client library to Android, Swift and Javascript.
|
100
|
+
email:
|
101
|
+
- rodrigo@rarolabs.com.br
|
102
|
+
executables: []
|
103
|
+
extensions: []
|
104
|
+
extra_rdoc_files: []
|
105
|
+
files:
|
106
|
+
- ".byebug_history"
|
107
|
+
- ".gitignore"
|
108
|
+
- ".rspec"
|
109
|
+
- ".travis.yml"
|
110
|
+
- CODE_OF_CONDUCT.md
|
111
|
+
- Gemfile
|
112
|
+
- LICENSE.txt
|
113
|
+
- README.md
|
114
|
+
- Rakefile
|
115
|
+
- bin/console
|
116
|
+
- bin/easyfire
|
117
|
+
- bin/setup
|
118
|
+
- easyfire.gemspec
|
119
|
+
- lib/easyfire.rb
|
120
|
+
- lib/easyfire/cli.rb
|
121
|
+
- lib/easyfire/easyfire_model.rb
|
122
|
+
- lib/easyfire/renders.rb
|
123
|
+
- lib/easyfire/renders/helpers.rb
|
124
|
+
- lib/easyfire/renders/model.rb
|
125
|
+
- lib/easyfire/renders/service.rb
|
126
|
+
- lib/easyfire/renders/templates/model.java.erb
|
127
|
+
- lib/easyfire/renders/templates/model.swift.erb
|
128
|
+
- lib/easyfire/renders/templates/service.java.erb
|
129
|
+
- lib/easyfire/renders/templates/service.swift.erb
|
130
|
+
- lib/easyfire/thor/android.rb
|
131
|
+
- lib/easyfire/thor/android/build.gradle.tt
|
132
|
+
- lib/easyfire/thor/android/build.sbt.tt
|
133
|
+
- lib/easyfire/thor/android/gradle.properties
|
134
|
+
- lib/easyfire/thor/android/gradle/wrapper/gradle-wrapper.jar
|
135
|
+
- lib/easyfire/thor/android/gradle/wrapper/gradle-wrapper.properties
|
136
|
+
- lib/easyfire/thor/android/gradlew
|
137
|
+
- lib/easyfire/thor/android/gradlew.bat
|
138
|
+
- lib/easyfire/thor/android/pom.xml.tt
|
139
|
+
- lib/easyfire/thor/android/settings.gradle.tt
|
140
|
+
- lib/easyfire/thor/android/src/main/AndroidManifest.xml.tt
|
141
|
+
- lib/easyfire/thor/android_helper/EasyfireDelegate.java.tt
|
142
|
+
- lib/easyfire/thor/android_helper/EasyfireListDelegate.java.tt
|
143
|
+
- lib/easyfire/thor/android_helper/ModelEF.java.tt
|
144
|
+
- lib/easyfire/thor/android_helper/ServiceEF.java.tt
|
145
|
+
- lib/easyfire/version.rb
|
146
|
+
homepage: http://www.rarolabs.com.br
|
147
|
+
licenses:
|
148
|
+
- MIT
|
149
|
+
metadata: {}
|
150
|
+
post_install_message:
|
151
|
+
rdoc_options: []
|
152
|
+
require_paths:
|
153
|
+
- lib
|
154
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
requirements: []
|
165
|
+
rubyforge_project:
|
166
|
+
rubygems_version: 2.6.13
|
167
|
+
signing_key:
|
168
|
+
specification_version: 4
|
169
|
+
summary: High level models descriptions for Firebase Realtime Database
|
170
|
+
test_files: []
|