OSDN Git Service

add editor
[pettanr/pettanr.git] / app / assets / javascripts / manifest / work / models.js.coffee.erb
1 #マニフェスト\r
2 @models = {\r
3   scroll: {\r
4     class_name: 'Scroll',\r
5     table_name: 'scrolls',\r
6     associations: {\r
7       belongs_to: {\r
8         author: {\r
9           id_column: 'author_id'\r
10         }, \r
11       },\r
12       has_many: {\r
13         scroll_panels: {\r
14           foreign_key: 'scroll_id',\r
15           model: 'scroll_panel',\r
16         }, \r
17         panels: {\r
18           through: 'scroll_panel',\r
19           foreign_key: 'scroll_id',\r
20           model: 'panel',\r
21         }, \r
22       },\r
23     },\r
24     attributes: {\r
25       id: {\r
26         type: 'number',\r
27         primary_key: 1,\r
28         rules : {\r
29           number: true,\r
30         }\r
31       },\r
32       title: {\r
33         type: 'text',\r
34         rules : {\r
35           required: true,\r
36         }\r
37       },\r
38       description: {\r
39         type: 'text',\r
40         rules : {\r
41         }\r
42       },\r
43       visible: {\r
44         type: 'number',\r
45         rules : {\r
46           required: true,\r
47           number: true,\r
48         },\r
49         source: {\r
50           type: 'magic_number',\r
51           key: 'scroll_visible_items',\r
52         },\r
53       },\r
54       author_id: {\r
55         type: 'number',\r
56         rules : {\r
57           required: true,\r
58           number: true,\r
59         },\r
60       },\r
61       created_at: {\r
62         type: 'datetime',\r
63       },\r
64       updated_at: {\r
65         type: 'datetime',\r
66       }\r
67     },\r
68     lists: {\r
69       public_list: {\r
70         type: 'public',\r
71       },\r
72       private_list: {\r
73         type: 'private',\r
74       },\r
75       scroll_panels: {\r
76         type: 'has_many',\r
77         args: {\r
78           association_name: 'scroll_panels',\r
79         },\r
80       },\r
81       panels: {\r
82         type: 'has_many_through',\r
83         args: {\r
84           association_name: 'panels',\r
85         },\r
86       },\r
87       by_author: {\r
88         type: 'filter',\r
89         args: {\r
90           from: 'author',\r
91           filter_key: 'author_id',\r
92         },\r
93       },\r
94       by_panel: {\r
95         type: 'through_filter',\r
96         args: {\r
97           from: 'panel',\r
98           through: 'scroll_panels',\r
99           filter_key: 'panel_id',\r
100         },\r
101       },\r
102       play: {\r
103         type: 'play',\r
104         args: {\r
105           model: 'scroll_panel',\r
106           filter_key: 'scroll_id',\r
107         },\r
108       },\r
109     },\r
110   },\r
111   scroll_panel: {\r
112     class_name: 'ScrollPanel',\r
113     table_name: 'scroll_panels',\r
114     associations: {\r
115       belongs_to: {\r
116         panel: {\r
117           id_column: 'panel_id'\r
118         }, \r
119         scroll: {\r
120           id_column: 'scroll_id'\r
121         }, \r
122       },\r
123       has_many: {\r
124       },\r
125     },\r
126     attributes: {\r
127       id: {\r
128         type: 'number',\r
129         primary_key: 1,\r
130         rules : {\r
131           number: true,\r
132         }\r
133       },\r
134       scroll_id: {\r
135         type: 'number',\r
136         rules : {\r
137           required: true,\r
138           number: true,\r
139         }\r
140       },\r
141       panel_id: {\r
142         type: 'number',\r
143         rules : {\r
144           required: true,\r
145           number: true,\r
146         }\r
147       },\r
148       t: {\r
149         type: 'number',\r
150         rules : {\r
151           required: true,\r
152           number: true,\r
153           min: 0,\r
154         }\r
155       },\r
156       author_id: {\r
157         type: 'number',\r
158         rules : {\r
159           required: true,\r
160           number: true,\r
161         }\r
162       },\r
163       created_at: {\r
164         type: 'datetime',\r
165       },\r
166       updated_at: {\r
167         type: 'datetime',\r
168       }\r
169     },\r
170     lists: {\r
171       public_list: {\r
172         type: 'public',\r
173       },\r
174       private_list: {\r
175         type: 'private',\r
176       },\r
177       by_scroll: {\r
178         type: 'filter',\r
179         args: {\r
180           from: 'scroll',\r
181           filter_key: 'scroll_id',\r
182         },\r
183       },\r
184       by_panel: {\r
185         type: 'filter',\r
186         args: {\r
187           from: 'panel',\r
188           filter_key: 'panel_id',\r
189         },\r
190       },\r
191     },\r
192   },\r
193   comic: {\r
194     class_name: 'Comic',\r
195     table_name: 'comics',\r
196     associations: {\r
197       belongs_to: {\r
198         author: {\r
199           id_column: 'author_id'\r
200         }, \r
201       },\r
202       has_many: {\r
203         stories: {\r
204           foreign_key: 'comic_id',\r
205           model: 'story',\r
206         }, \r
207       },\r
208       has_many_through: {\r
209       },\r
210     },\r
211     attributes: {\r
212       id: {\r
213         type: 'number',\r
214         primary_key: 1,\r
215         rules : {\r
216           number: true,\r
217         }\r
218       },\r
219       title: {\r
220         type: 'text',\r
221         rules : {\r
222           required: true,\r
223         }\r
224       },\r
225       description: {\r
226         type: 'text',\r
227         rules : {\r
228         }\r
229       },\r
230       visible: {\r
231         type: 'number',\r
232         rules : {\r
233           required: true,\r
234           number: true,\r
235         },\r
236         source: {\r
237           type: 'magic_number',\r
238           key: 'comic_visible_items',\r
239         },\r
240       },\r
241       author_id: {\r
242         type: 'number',\r
243         rules : {\r
244           required: true,\r
245           number: true,\r
246         }\r
247       },\r
248       created_at: {\r
249         type: 'datetime',\r
250       },\r
251       updated_at: {\r
252         type: 'datetime',\r
253       }\r
254     },\r
255     lists: {\r
256       public_list: {\r
257         type: 'public',\r
258       },\r
259       private_list: {\r
260         type: 'private',\r
261       },\r
262       stories: {\r
263         type: 'has_many',\r
264         args: {\r
265           association_name: 'stories',\r
266         },\r
267       },\r
268       by_author: {\r
269         type: 'filter',\r
270         args: {\r
271           from: 'author',\r
272           filter_key: 'author_id',\r
273         },\r
274       },\r
275     },\r
276   },\r
277   story: {\r
278     class_name: 'Story',\r
279     table_name: 'stories',\r
280     associations: {\r
281       belongs_to: {\r
282         comic: {\r
283           id_column: 'comic_id'\r
284         }, \r
285       },\r
286       has_many: {\r
287         story_sheets: {\r
288           foreign_key: 'story_id',\r
289           model: 'story_sheet',\r
290         }, \r
291         sheets: {\r
292           through: 'story_sheets',\r
293           foreign_key: 'story_id',\r
294           model: 'sheet',\r
295         }, \r
296       },\r
297     },\r
298     attributes: {\r
299       id: {\r
300         type: 'number',\r
301         primary_key: 1,\r
302         rules : {\r
303           number: true,\r
304         }\r
305       },\r
306       comic_id: {\r
307         type: 'number',\r
308         rules : {\r
309           number: true,\r
310         }\r
311       },\r
312       title: {\r
313         type: 'text',\r
314         rules : {\r
315         }\r
316       },\r
317       description: {\r
318         type: 'text',\r
319         rules : {\r
320         }\r
321       },\r
322       t: {\r
323         type: 'number',\r
324         rules : {\r
325           required: true,\r
326           number: true,\r
327           min: 0,\r
328         }\r
329       },\r
330       visible: {\r
331         type: 'number',\r
332         rules : {\r
333           required: true,\r
334           number: true,\r
335         },\r
336         source: {\r
337           type: 'magic_number',\r
338           key: 'story_visible_items',\r
339         },\r
340       },\r
341       created_at: {\r
342         type: 'datetime',\r
343       },\r
344       updated_at: {\r
345         type: 'datetime',\r
346       }\r
347     },\r
348     lists: {\r
349       public_list: {\r
350         type: 'public',\r
351       },\r
352       private_list: {\r
353         type: 'private',\r
354       },\r
355       story_sheets: {\r
356         type: 'has_many',\r
357         args: {\r
358           association_name: 'story_sheets',\r
359         },\r
360       },\r
361       sheets: {\r
362         type: 'has_many',\r
363         args: {\r
364           association_name: 'sheets',\r
365         },\r
366       },\r
367       by_comic: {\r
368         type: 'filter',\r
369         args: {\r
370           from: 'comic',\r
371           filter_key: 'comic_id',\r
372         },\r
373       },\r
374       by_sheet: {\r
375         type: 'through_filter',\r
376         args: {\r
377           from: 'sheet',\r
378           through: 'story_sheets',\r
379           filter_key: 'sheet_id',\r
380         },\r
381       },\r
382       by_author: {\r
383         type: 'element_filter',\r
384         args: {\r
385           from: 'author',\r
386           filter_key: 'author_id',\r
387         },\r
388       },\r
389       play: {\r
390         type: 'play',\r
391         args: {\r
392           model: 'story_sheet',\r
393           filter_key: 'story_id',\r
394         },\r
395       },\r
396     },\r
397   },\r
398   story_sheet: {\r
399     class_name: 'StorySheet',\r
400     table_name: 'story_sheets',\r
401     associations: {\r
402       belongs_to: {\r
403         story: {\r
404           id_column: 'story_id'\r
405         }, \r
406         sheet: {\r
407           id_column: 'sheet_id'\r
408         }, \r
409       },\r
410       has_many: {\r
411       },\r
412     },\r
413     attributes: {\r
414       id: {\r
415         type: 'number',\r
416         primary_key: 1,\r
417         rules : {\r
418           number: true,\r
419         }\r
420       },\r
421       story_id: {\r
422         type: 'number',\r
423         rules : {\r
424           number: true,\r
425         }\r
426       },\r
427       sheet_id: {\r
428         type: 'number',\r
429         rules : {\r
430           number: true,\r
431         }\r
432       },\r
433       t: {\r
434         type: 'number',\r
435         rules : {\r
436           required: true,\r
437           number: true,\r
438           min: 0,\r
439         }\r
440       },\r
441       author_id: {\r
442         type: 'number',\r
443         rules : {\r
444           required: true,\r
445           number: true,\r
446         }\r
447       },\r
448       created_at: {\r
449         type: 'datetime',\r
450       },\r
451       updated_at: {\r
452         type: 'datetime',\r
453       }\r
454     },\r
455     lists: {\r
456       public_list: {\r
457         type: 'public',\r
458       },\r
459       private_list: {\r
460         type: 'private',\r
461       },\r
462       by_story: {\r
463         type: 'filter',\r
464         args: {\r
465           from: 'story',\r
466           filter_key: 'story_id',\r
467         },\r
468       },\r
469       by_sheet: {\r
470         type: 'filter',\r
471         args: {\r
472           from: 'sheet',\r
473           filter_key: 'sheet_id',\r
474         },\r
475       },\r
476     },\r
477   },\r
478   sheet: {\r
479     class_name: 'Sheet',\r
480     table_name: 'sheets',\r
481     associations: {\r
482       belongs_to: {\r
483         author: {\r
484           id_column: 'author_id'\r
485         }, \r
486       },\r
487       has_many: {\r
488         story_sheets: {\r
489           foreign_key: 'story_id',\r
490           model: 'story_sheet',\r
491         }, \r
492         stories: {\r
493           through: 'story_sheets',\r
494           foreign_key: 'sheet_id',\r
495           model: 'story',\r
496         }, \r
497         sheet_panels: {\r
498           foreign_key: 'sheet_id',\r
499           model: 'sheet_panel',\r
500         }, \r
501         panels: {\r
502           through: 'sheet_panels',\r
503           foreign_key: 'sheet_id',\r
504           model: 'panel',\r
505         }, \r
506       },\r
507     },\r
508     attributes: {\r
509       id: {\r
510         type: 'number',\r
511         primary_key: 1,\r
512         rules : {\r
513           number: true,\r
514         }\r
515       },\r
516       caption: {\r
517         type: 'text',\r
518         rules : {\r
519         }\r
520       },\r
521       width: {\r
522         type: 'number',\r
523         rules : {\r
524           required: true,\r
525           number: true,\r
526         }\r
527       },\r
528       height: {\r
529         type: 'number',\r
530         rules : {\r
531           required: true,\r
532           number: true,\r
533         }\r
534       },\r
535       visible: {\r
536         type: 'number',\r
537         rules : {\r
538           required: true,\r
539           number: true,\r
540         },\r
541         source: {\r
542           type: 'magic_number',\r
543           key: 'sheet_visible_items',\r
544         },\r
545       },\r
546       author_id: {\r
547         type: 'number',\r
548         rules : {\r
549           required: true,\r
550           number: true,\r
551         }\r
552       },\r
553       created_at: {\r
554         type: 'datetime',\r
555       },\r
556       updated_at: {\r
557         type: 'datetime',\r
558       }\r
559     },\r
560     lists: {\r
561       public_list: {\r
562         type: 'public',\r
563       },\r
564       private_list: {\r
565         type: 'private',\r
566       },\r
567       story_sheets: {\r
568         type: 'has_many',\r
569         args: {\r
570           association_name: 'story_sheets',\r
571         },\r
572       },\r
573       stories: {\r
574         type: 'has_many',\r
575         args: {\r
576           association_name: 'stories',\r
577         },\r
578       },\r
579       sheet_panels: {\r
580         type: 'has_many',\r
581         args: {\r
582           association_name: 'sheet_panels',\r
583         },\r
584       },\r
585       panels: {\r
586         type: 'has_many',\r
587         args: {\r
588           association_name: 'panels',\r
589         },\r
590       },\r
591       by_story: {\r
592         type: 'through_filter',\r
593         args: {\r
594           from: 'story',\r
595           through: 'story_sheets',\r
596           filter_key: 'story_id',\r
597         },\r
598       },\r
599       by_panel: {\r
600         type: 'through_filter',\r
601         args: {\r
602           from: 'panel',\r
603           through: 'sheet_panels',\r
604           filter_key: 'panel_id',\r
605         },\r
606       },\r
607       by_author: {\r
608         type: 'filter',\r
609         args: {\r
610           from: 'author',\r
611           filter_key: 'author_id',\r
612         },\r
613       },\r
614       play: {\r
615         type: 'play',\r
616         args: {\r
617           model: 'sheet_panel',\r
618           filter_key: 'sheet_id',\r
619         },\r
620       },\r
621     },\r
622   },\r
623   sheet_panel: {\r
624     class_name: 'SheetPanel',\r
625     table_name: 'sheet_panels',\r
626     associations: {\r
627       belongs_to: {\r
628         sheet: {\r
629           id_column: 'sheet_id'\r
630         }, \r
631         panel: {\r
632           id_column: 'panel_id'\r
633         }, \r
634       },\r
635       has_many: {\r
636       },\r
637     },\r
638     attributes: {\r
639       id: {\r
640         type: 'number',\r
641         primary_key: 1,\r
642         rules : {\r
643           number: true,\r
644         }\r
645       },\r
646       sheet_id: {\r
647         type: 'number',\r
648         rules : {\r
649           number: true,\r
650         }\r
651       },\r
652       panel_id: {\r
653         type: 'number',\r
654         rules : {\r
655           number: true,\r
656         }\r
657       },\r
658       x: {\r
659         type: 'number',\r
660         rules : {\r
661           required: true,\r
662           number: true,\r
663         }\r
664       },\r
665       y: {\r
666         type: 'number',\r
667         rules : {\r
668           required: true,\r
669           number: true,\r
670         }\r
671       },\r
672       z: {\r
673         type: 'number',\r
674         rules : {\r
675           required: true,\r
676           number: true,\r
677           min: 1,\r
678         }\r
679       },\r
680       t: {\r
681         type: 'number',\r
682         rules : {\r
683           required: true,\r
684           number: true,\r
685           min: 0,\r
686         }\r
687       },\r
688       author_id: {\r
689         type: 'number',\r
690         rules : {\r
691           number: true,\r
692         }\r
693       },\r
694       created_at: {\r
695         type: 'datetime',\r
696       },\r
697       updated_at: {\r
698         type: 'datetime',\r
699       }\r
700     },\r
701     lists: {\r
702       public_list: {\r
703         type: 'public',\r
704       },\r
705       private_list: {\r
706         type: 'private',\r
707       },\r
708       by_sheet: {\r
709         type: 'filter',\r
710         args: {\r
711           association_name: 'sheet_panels',\r
712           from: 'sheet',\r
713           filter_key: 'sheet_id',\r
714         },\r
715       },\r
716       by_panel: {\r
717         type: 'filter',\r
718         args: {\r
719           from: 'panel',\r
720           filter_key: 'panel_id',\r
721         },\r
722       },\r
723     },\r
724   },\r
725   panel: {\r
726     class_name: 'Panel',\r
727     table_name: 'panels',\r
728     associations: {\r
729       belongs_to: {\r
730         author: {\r
731           id_column: 'author_id'\r
732         }, \r
733       },\r
734       has_many: {\r
735         scroll_panels: {\r
736           foreign_key: 'panel_id',\r
737           model: 'scroll_panel',\r
738         }, \r
739         scrolls: {\r
740           through: 'scroll_panels',\r
741           foreign_key: 'panel_id',\r
742           model: 'scroll',\r
743         }, \r
744         sheet_panels: {\r
745           foreign_key: 'panel_id',\r
746           model: 'sheet_panel',\r
747         }, \r
748         sheets: {\r
749           through: 'sheet_panels',\r
750           foreign_key: 'panel_id',\r
751           model: 'sheet',\r
752         }, \r
753         panel_pictures: {\r
754           foreign_key: 'panel_id',\r
755           model: 'panel_picture',\r
756         }, \r
757         speech_balloons: {\r
758           foreign_key: 'panel_id',\r
759           model: 'speech_balloon',\r
760         }, \r
761         ground_pictures: {\r
762           foreign_key: 'panel_id',\r
763           model: 'ground_picture',\r
764         }, \r
765         ground_colors: {\r
766           foreign_key: 'panel_id',\r
767           model: 'ground_color',\r
768         }, \r
769       },\r
770     },\r
771     attributes: {\r
772       id: {\r
773         type: 'number',\r
774         primary_key: 1,\r
775         rules : {\r
776           number: true,\r
777         }\r
778       },\r
779       width: {\r
780         type: 'number',\r
781         rules : {\r
782           required: true,\r
783           number: true,\r
784           min: 1,\r
785         }\r
786       },\r
787       height: {\r
788         type: 'number',\r
789         rules : {\r
790           required: true,\r
791           number: true,\r
792           min: 1,\r
793         }\r
794       },\r
795       border: {\r
796         type: 'number',\r
797         rules : {\r
798           required: true,\r
799           number: true,\r
800           min: 0,\r
801         }\r
802       },\r
803       caption: {\r
804         type: 'text',\r
805         rules : {\r
806         }\r
807       },\r
808       publish: {\r
809         type: 'number',\r
810         rules : {\r
811           required: true,\r
812           number: true,\r
813         },\r
814         source: {\r
815           type: 'magic_number',\r
816           key: 'panel_visible_items',\r
817         },\r
818       },\r
819       author_id: {\r
820         type: 'number',\r
821         rules : {\r
822           required: true,\r
823           number: true,\r
824         }\r
825       },\r
826       created_at: {\r
827         type: 'datetime',\r
828       },\r
829       updated_at: {\r
830         type: 'datetime',\r
831       }\r
832     },\r
833     lists: {\r
834       public_list: {\r
835         type: 'public',\r
836       },\r
837       private_list: {\r
838         type: 'private',\r
839       },\r
840       scroll_panels: {\r
841         type: 'has_many',\r
842         args: {\r
843           association_name: 'scroll_panels',\r
844         },\r
845       },\r
846       scrolls: {\r
847         type: 'has_many',\r
848         args: {\r
849           association_name: 'scrolls',\r
850         },\r
851       },\r
852       sheet_panels: {\r
853         type: 'has_many',\r
854         args: {\r
855           association_name: 'sheet_panels',\r
856         },\r
857       },\r
858       sheets: {\r
859         type: 'has_many',\r
860         args: {\r
861           association_name: 'sheets',\r
862         },\r
863       },\r
864       panel_pictures: {\r
865         type: 'has_many',\r
866         args: {\r
867           association_name: 'panel_pictures',\r
868         },\r
869       },\r
870       speech_balloons: {\r
871         type: 'has_many',\r
872         args: {\r
873           association_name: 'speech_balloons',\r
874         },\r
875       },\r
876       ground_pictures: {\r
877         type: 'has_many',\r
878         args: {\r
879           association_name: 'ground_pictures',\r
880         },\r
881       },\r
882       ground_colors: {\r
883         type: 'has_many',\r
884         args: {\r
885           association_name: 'ground_colors',\r
886         },\r
887       },\r
888       by_scroll: {\r
889         type: 'through_filter',\r
890         args: {\r
891           from: 'scroll',\r
892           through: 'scroll_panels',\r
893           filter_key: 'scroll_id',\r
894         },\r
895       },\r
896       by_sheet: {\r
897         type: 'through_filter',\r
898         args: {\r
899           from: 'sheet',\r
900           through: 'sheet_panels',\r
901           filter_key: 'sheet_id',\r
902         },\r
903       },\r
904       by_author: {\r
905         type: 'filter',\r
906         args: {\r
907           from: 'author',\r
908           filter_key: 'author_id',\r
909         },\r
910       },\r
911       by_speech_balloon_template: {\r
912         type: 'through_filter',\r
913         args: {\r
914           from: 'speech_balloon_template',\r
915           through: 'speech_balloons',\r
916           filter_key: 'speech_balloon_template_id',\r
917         },\r
918       },\r
919     },\r
920   },\r
921   panel_picture: {\r
922     class_name: 'PanelPicture',\r
923     table_name: 'panel_pictures',\r
924     associations: {\r
925       belongs_to: {\r
926         panel: {\r
927           id_column: 'panel_id'\r
928         }, \r
929       },\r
930       has_many: {\r
931       },\r
932     },\r
933     attributes: {\r
934       id: {\r
935         type: 'number',\r
936         primary_key: 1,\r
937         rules : {\r
938           number: true,\r
939         }\r
940       },\r
941       panel_id: {\r
942         type: 'number',\r
943         rules : {\r
944           number: true,\r
945         }\r
946       },\r
947       picture_id: {\r
948         type: 'number',\r
949         rules : {\r
950           required: true,\r
951           number: true,\r
952         }\r
953       },\r
954       caption: {\r
955         type: 'text',\r
956         rules : {\r
957         }\r
958       },\r
959       x: {\r
960         type: 'number',\r
961         rules : {\r
962           required: true,\r
963           number: true,\r
964         }\r
965       },\r
966       y: {\r
967         type: 'number',\r
968         rules : {\r
969           required: true,\r
970           number: true,\r
971         }\r
972       },\r
973       width: {\r
974         type: 'number',\r
975         rules : {\r
976           required: true,\r
977           number: true,\r
978         }\r
979       },\r
980       height: {\r
981         type: 'number',\r
982         rules : {\r
983           required: true,\r
984           number: true,\r
985         }\r
986       },\r
987       link: {\r
988         type: 'text',\r
989         rules : {\r
990           url: true,\r
991         }\r
992       },\r
993       z: {\r
994         type: 'number',\r
995         rules : {\r
996           required: true,\r
997           number: true,\r
998           min: 1,\r
999         }\r
1000       },\r
1001       t: {\r
1002         type: 'number',\r
1003         rules : {\r
1004           required: true,\r
1005           number: true,\r
1006           min: 0,\r
1007         }\r
1008       },\r
1009       created_at: {\r
1010         type: 'datetime',\r
1011       },\r
1012       updated_at: {\r
1013         type: 'datetime',\r
1014       }\r
1015     },\r
1016     lists: {\r
1017       public_list: {\r
1018         type: 'public',\r
1019       },\r
1020       private_list: {\r
1021         type: 'private',\r
1022       },\r
1023       by_panel: {\r
1024         type: 'filter',\r
1025         args: {\r
1026           from: 'panel',\r
1027           filter_key: 'panel_id',\r
1028         },\r
1029       },\r
1030       by_author: {\r
1031         type: 'element_filter',\r
1032         args: {\r
1033           from: 'author',\r
1034           filter_key: 'author_id',\r
1035         },\r
1036       },\r
1037     },\r
1038   },\r
1039   speech_balloon: {\r
1040     class_name: 'SpeechBalloon',\r
1041     table_name: 'speech_balloons',\r
1042     extend: 'classname', \r
1043     associations: {\r
1044       belongs_to: {\r
1045         panel: {\r
1046           id_column: 'panel_id'\r
1047         }, \r
1048       },\r
1049       has_many: {\r
1050       },\r
1051       has_one: {\r
1052         balloon: {\r
1053           foreign_key: 'speech_balloon_id',\r
1054           model: 'balloon',\r
1055         }, \r
1056         speech: {\r
1057           foreign_key: 'speech_balloon_id',\r
1058           model: 'speech',\r
1059         }, \r
1060       },\r
1061     },\r
1062     attributes: {\r
1063       id: {\r
1064         type: 'number',\r
1065         primary_key: 1,\r
1066         rules : {\r
1067           number: true,\r
1068         }\r
1069       },\r
1070       panel_id: {\r
1071         type: 'number',\r
1072         rules : {\r
1073           number: true,\r
1074         }\r
1075       },\r
1076       speech_balloon_template_id: {\r
1077         type: 'number',\r
1078         rules : {\r
1079           required: true,\r
1080           number: true,\r
1081         }\r
1082       },\r
1083       classname: {\r
1084         type: 'text',\r
1085         rules : {\r
1086           required: true,\r
1087         }\r
1088       },\r
1089       z: {\r
1090         type: 'number',\r
1091         rules : {\r
1092           required: true,\r
1093           number: true,\r
1094           min: 1,\r
1095         }\r
1096       },\r
1097       t: {\r
1098         type: 'number',\r
1099         rules : {\r
1100           required: true,\r
1101           number: true,\r
1102           min: 0,\r
1103         }\r
1104       },\r
1105       settings: {\r
1106         type: 'text',\r
1107         rules : {\r
1108         }\r
1109       },\r
1110       caption: {\r
1111         type: 'text',\r
1112         rules : {\r
1113         }\r
1114       },\r
1115       created_at: {\r
1116         type: 'datetime',\r
1117       },\r
1118       updated_at: {\r
1119         type: 'datetime',\r
1120       }\r
1121     },\r
1122     lists: {\r
1123       public_list: {\r
1124         type: 'public',\r
1125       },\r
1126       private_list: {\r
1127         type: 'private',\r
1128       },\r
1129       by_panel: {\r
1130         type: 'filter',\r
1131         args: {\r
1132           from: 'panel',\r
1133           filter_key: 'panel_id',\r
1134         },\r
1135       },\r
1136       by_speech_balloon_template: {\r
1137         type: 'filter',\r
1138         args: {\r
1139           from: 'speech_balloon_template',\r
1140           filter_key: 'speech_balloon_template_id',\r
1141         },\r
1142       },\r
1143       by_author: {\r
1144         type: 'element_filter',\r
1145         args: {\r
1146           from: 'author',\r
1147           filter_key: 'author_id',\r
1148         },\r
1149       },\r
1150     },\r
1151   }, \r
1152   balloon: {\r
1153     class_name: 'Balloon',\r
1154     table_name: 'balloons',\r
1155     associations: {\r
1156       belongs_to: {\r
1157         speech_balloon: {\r
1158           id_column: 'speech_balloon_id'\r
1159         }, \r
1160         system_picture: {\r
1161           id_column: 'system_picture_id'\r
1162         }, \r
1163       },\r
1164       has_many: {\r
1165       },\r
1166     },\r
1167     attributes: {\r
1168       id: {\r
1169         type: 'number',\r
1170         primary_key: 1,\r
1171         rules : {\r
1172           number: true,\r
1173         }\r
1174       },\r
1175       speech_balloon_id: {\r
1176         type: 'number',\r
1177         rules : {\r
1178           number: true,\r
1179         }\r
1180       },\r
1181       system_picture_id: {\r
1182         type: 'number',\r
1183         rules : {\r
1184           required: true,\r
1185           number: true,\r
1186         }\r
1187       },\r
1188       x: {\r
1189         type: 'number',\r
1190         rules : {\r
1191           required: true,\r
1192           number: true,\r
1193         }\r
1194       },\r
1195       y: {\r
1196         type: 'number',\r
1197         rules : {\r
1198           required: true,\r
1199           number: true,\r
1200         }\r
1201       },\r
1202       width: {\r
1203         type: 'number',\r
1204         rules : {\r
1205           required: true,\r
1206           number: true,\r
1207           min: 1,\r
1208         }\r
1209       },\r
1210       height: {\r
1211         type: 'number',\r
1212         rules : {\r
1213           required: true,\r
1214           number: true,\r
1215           min: 1,\r
1216         }\r
1217       },\r
1218       r: {\r
1219         type: 'number',\r
1220         rules : {\r
1221           required: true,\r
1222           number: true,\r
1223         }\r
1224       },\r
1225       settings: {\r
1226         type: 'text',\r
1227         rules : {\r
1228         }\r
1229       },\r
1230       created_at: {\r
1231         type: 'datetime',\r
1232       },\r
1233       updated_at: {\r
1234         type: 'datetime',\r
1235       }\r
1236     },\r
1237     lists: {\r
1238       public_list: {\r
1239         type: 'public',\r
1240       },\r
1241       private_list: {\r
1242         type: 'private',\r
1243       },\r
1244       by_panel: {\r
1245         type: 'filter',\r
1246         args: {\r
1247           from: 'panel',\r
1248           filter_key: 'panel_id',\r
1249         },\r
1250       },\r
1251       by_speech_balloon_template: {\r
1252         type: 'filter',\r
1253         args: {\r
1254           from: 'speech_balloon_template',\r
1255           filter_key: 'speech_balloon_template_id',\r
1256         },\r
1257       },\r
1258       by_author: {\r
1259         type: 'element_filter',\r
1260         args: {\r
1261           from: 'author',\r
1262           filter_key: 'author_id',\r
1263         },\r
1264       },\r
1265     },\r
1266   },\r
1267   speech: {\r
1268     class_name: 'Speech',\r
1269     table_name: 'speeches',\r
1270     associations: {\r
1271       belongs_to: {\r
1272         speech_balloon: {\r
1273           id_column: 'speech_balloon_id'\r
1274         }, \r
1275         writing_format: {\r
1276           id_column: 'writing_format_id'\r
1277         }, \r
1278       },\r
1279       has_many: {\r
1280       },\r
1281     },\r
1282     attributes: {\r
1283       id: {\r
1284         type: 'number',\r
1285         primary_key: 1,\r
1286         rules : {\r
1287           number: true,\r
1288         }\r
1289       },\r
1290       speech_balloon_id: {\r
1291         type: 'number',\r
1292         rules : {\r
1293           number: true,\r
1294         }\r
1295       },\r
1296       writing_format_id: {\r
1297         type: 'number',\r
1298         source: {\r
1299           type: 'model',\r
1300           key: 'writing_format_items',\r
1301         },\r
1302         rules : {\r
1303           required: true,\r
1304           number: true,\r
1305         }\r
1306       },\r
1307       content: {\r
1308         type: 'text',\r
1309         rules : {\r
1310         }\r
1311       },\r
1312       font_size: {\r
1313         type: 'float',\r
1314         rules : {\r
1315           required: true,\r
1316           number: true,\r
1317           min: 0,\r
1318         },\r
1319         source: {\r
1320           type: 'magic_number',\r
1321           key: 'speech_font_size_items',\r
1322         },\r
1323       },\r
1324       text_align: {\r
1325         type: 'number',\r
1326         rules : {\r
1327           required: true,\r
1328           number: true,\r
1329           range: [0, 3],\r
1330         },\r
1331         source: {\r
1332           type: 'magic_number',\r
1333           key: 'speech_text_align_items',\r
1334         },\r
1335       },\r
1336       fore_color: {\r
1337         type: 'number',\r
1338         rules : {\r
1339           required: true,\r
1340           number: true,\r
1341           range: [0, 0xffffff],\r
1342         }\r
1343       },\r
1344       x: {\r
1345         type: 'number',\r
1346         rules : {\r
1347           required: true,\r
1348           number: true,\r
1349         }\r
1350       },\r
1351       y: {\r
1352         type: 'number',\r
1353         rules : {\r
1354           required: true,\r
1355           number: true,\r
1356         }\r
1357       },\r
1358       width: {\r
1359         type: 'number',\r
1360         rules : {\r
1361           required: true,\r
1362           number: true,\r
1363           min: 1,\r
1364         }\r
1365       },\r
1366       height: {\r
1367         type: 'number',\r
1368         rules : {\r
1369           required: true,\r
1370           number: true,\r
1371           min: 1,\r
1372         }\r
1373       },\r
1374       quotes: {\r
1375         type: 'text',\r
1376         rules : {\r
1377         }\r
1378       },\r
1379       settings: {\r
1380         type: 'text',\r
1381         rules : {\r
1382         }\r
1383       },\r
1384       created_at: {\r
1385         type: 'datetime',\r
1386       },\r
1387       updated_at: {\r
1388         type: 'datetime',\r
1389       }\r
1390     },\r
1391     lists: {\r
1392       public_list: {\r
1393         type: 'public',\r
1394       },\r
1395       by_speech_balloon: {\r
1396         type: 'filter',\r
1397         args: {\r
1398           from: 'speech_balloon',\r
1399           includes: {speech_balloon: {panel: {}}},\r
1400           filter_key: 'speech_balloon_id',\r
1401         },\r
1402       },\r
1403       by_writing_format: {\r
1404         type: 'filter',\r
1405         args: {\r
1406           from: 'writing_format',\r
1407           filter_key: 'writing_format_id',\r
1408         },\r
1409       },\r
1410     },\r
1411   },\r
1412   ground_picture: {\r
1413     class_name: 'GroundPicture',\r
1414     table_name: 'ground_pictures',\r
1415     associations: {\r
1416       belongs_to: {\r
1417         panel: {\r
1418           id_column: 'panel_id'\r
1419         }, \r
1420       },\r
1421       has_many: {\r
1422       },\r
1423     },\r
1424     attributes: {\r
1425       id: {\r
1426         type: 'number',\r
1427         primary_key: 1,\r
1428         rules : {\r
1429           number: true,\r
1430         }\r
1431       },\r
1432       panel_id: {\r
1433         type: 'number',\r
1434         rules : {\r
1435           number: true,\r
1436         }\r
1437       },\r
1438       picture_id: {\r
1439         type: 'number',\r
1440         rules : {\r
1441           required: true,\r
1442           number: true,\r
1443         }\r
1444       },\r
1445       caption: {\r
1446         type: 'text',\r
1447         rules : {\r
1448         }\r
1449       },\r
1450       repeat: {\r
1451         type: 'number',\r
1452         rules : {\r
1453           required: true,\r
1454           number: true,\r
1455           range: [0, 3],\r
1456         },\r
1457         source: {\r
1458           type: 'magic_number',\r
1459           key: 'ground_picture_repeat_items',\r
1460         },\r
1461       },\r
1462       x: {\r
1463         type: 'number',\r
1464         rules : {\r
1465           required: true,\r
1466           number: true,\r
1467         }\r
1468       },\r
1469       y: {\r
1470         type: 'number',\r
1471         rules : {\r
1472           required: true,\r
1473           number: true,\r
1474         }\r
1475       },\r
1476       z: {\r
1477         type: 'number',\r
1478         rules : {\r
1479           required: true,\r
1480           number: true,\r
1481           min: 1,\r
1482         }\r
1483       },\r
1484       t: {\r
1485         type: 'number',\r
1486         rules : {\r
1487           required: true,\r
1488           number: true,\r
1489           min: 0,\r
1490         }\r
1491       },\r
1492       created_at: {\r
1493         type: 'datetime',\r
1494       },\r
1495       updated_at: {\r
1496         type: 'datetime',\r
1497       }\r
1498     },\r
1499     lists: {\r
1500       public_list: {\r
1501         type: 'public',\r
1502       },\r
1503       private_list: {\r
1504         type: 'private',\r
1505       },\r
1506       by_panel: {\r
1507         type: 'filter',\r
1508         args: {\r
1509           from: 'panel',\r
1510           filter_key: 'panel_id',\r
1511         },\r
1512       },\r
1513       by_author: {\r
1514         type: 'element_filter',\r
1515         args: {\r
1516           from: 'author',\r
1517           filter_key: 'author_id',\r
1518         },\r
1519       },\r
1520     },\r
1521   },\r
1522   ground_color: {\r
1523     class_name: 'GroundColor',\r
1524     table_name: 'ground_colors',\r
1525     associations: {\r
1526       belongs_to: {\r
1527         panel: {\r
1528           id_column: 'panel_id'\r
1529         }, \r
1530       },\r
1531       has_many: {\r
1532       },\r
1533     },\r
1534     attributes: {\r
1535       id: {\r
1536         type: 'number',\r
1537         primary_key: 1,\r
1538         rules : {\r
1539           number: true,\r
1540         }\r
1541       },\r
1542       panel_id: {\r
1543         type: 'number',\r
1544         rules : {\r
1545           number: true,\r
1546         }\r
1547       },\r
1548       caption: {\r
1549         type: 'text',\r
1550         rules : {\r
1551         }\r
1552       },\r
1553       code: {\r
1554         type: 'number',\r
1555         rules : {\r
1556           required: true,\r
1557           number: true,\r
1558           range: [0, 0xffffff],\r
1559         }\r
1560       },\r
1561       orientation: {\r
1562         type: 'number',\r
1563         rules : {\r
1564           required: true,\r
1565           number: true,\r
1566           range: [0, 1],\r
1567         },\r
1568         source: {\r
1569           type: 'magic_number',\r
1570           key: 'ground_color_orientation_items',\r
1571         },\r
1572       },\r
1573       xy: {\r
1574         type: 'number',\r
1575         rules : {\r
1576           number: true,\r
1577         }\r
1578       },\r
1579       wh: {\r
1580         type: 'number',\r
1581         rules : {\r
1582           number: true,\r
1583         }\r
1584       },\r
1585       z: {\r
1586         type: 'number',\r
1587         rules : {\r
1588           required: true,\r
1589           number: true,\r
1590           min: 1,\r
1591         }\r
1592       },\r
1593       t: {\r
1594         type: 'number',\r
1595         rules : {\r
1596           required: true,\r
1597           number: true,\r
1598           min: 0,\r
1599         }\r
1600       },\r
1601       created_at: {\r
1602         type: 'datetime',\r
1603       },\r
1604       updated_at: {\r
1605         type: 'datetime',\r
1606       }\r
1607     },\r
1608     lists: {\r
1609       public_list: {\r
1610         type: 'public',\r
1611       },\r
1612       private_list: {\r
1613         type: 'private',\r
1614       },\r
1615       by_panel: {\r
1616         type: 'filter',\r
1617         args: {\r
1618           from: 'panel',\r
1619           filter_key: 'panel_id',\r
1620         },\r
1621       },\r
1622       by_author: {\r
1623         type: 'element_filter',\r
1624         args: {\r
1625           from: 'author',\r
1626           filter_key: 'author_id',\r
1627         },\r
1628       },\r
1629     },\r
1630   },\r
1631   original_picture: {\r
1632     class_name: 'OriginalPicture',\r
1633     table_name: 'original_pictures',\r
1634     associations: {\r
1635       belongs_to: {\r
1636         artist: {\r
1637           id_column: 'artist_id'\r
1638         }, \r
1639       },\r
1640       has_many: {\r
1641         pictures: {\r
1642           foreign_key: 'original_picture_id',\r
1643           model: 'picture',\r
1644         }, \r
1645       },\r
1646       has_one: {\r
1647         resource_picture: {\r
1648           foreign_key: 'original_picture_id',\r
1649           model: 'resource_picture',\r
1650         }, \r
1651       },\r
1652     },\r
1653     attributes: {\r
1654       id: {\r
1655         type: 'number',\r
1656         primary_key: 1,\r
1657         rules : {\r
1658           number: true,\r
1659         }\r
1660       },\r
1661       ext: {\r
1662         type: 'text',\r
1663         rules : {\r
1664           required: true,\r
1665         }\r
1666       },\r
1667       width: {\r
1668         type: 'number',\r
1669         rules : {\r
1670           required: true,\r
1671           number: true,\r
1672         }\r
1673       },\r
1674       height: {\r
1675         type: 'number',\r
1676         rules : {\r
1677           required: true,\r
1678           number: true,\r
1679         }\r
1680       },\r
1681       filesize: {\r
1682         type: 'number',\r
1683         rules : {\r
1684           required: true,\r
1685           number: true,\r
1686         }\r
1687       },\r
1688       artist_id: {\r
1689         type: 'number',\r
1690         rules : {\r
1691           required: true,\r
1692           number: true,\r
1693         }\r
1694       },\r
1695       md5: {\r
1696         type: 'text',\r
1697         rules : {\r
1698           required: true,\r
1699           required: true,\r
1700         }\r
1701       },\r
1702       uploaded_at: {\r
1703         type: 'datetime',\r
1704       },\r
1705       published_at: {\r
1706         type: 'datetime',\r
1707       },\r
1708       stopped_at: {\r
1709         type: 'datetime',\r
1710       },\r
1711       created_at: {\r
1712         type: 'datetime',\r
1713       },\r
1714       updated_at: {\r
1715         type: 'datetime',\r
1716       }\r
1717     },\r
1718     lists: {\r
1719       private_list: {\r
1720         type: 'private',\r
1721       },\r
1722     },\r
1723   },\r
1724   picture: {\r
1725     class_name: 'Picture',\r
1726     table_name: 'pictures',\r
1727     associations: {\r
1728       belongs_to: {\r
1729         license: {\r
1730           id_column: 'license_id'\r
1731         }, \r
1732         artist: {\r
1733           id_column: 'artist_id'\r
1734         }, \r
1735       },\r
1736       has_many: {\r
1737       },\r
1738       has_one: {\r
1739       },\r
1740     },\r
1741     attributes: {\r
1742       id: {\r
1743         type: 'number',\r
1744         primary_key: 1,\r
1745         rules : {\r
1746           number: true,\r
1747         }\r
1748       },\r
1749       original_picture_id: {\r
1750         type: 'number',\r
1751         rules : {\r
1752           required: true,\r
1753           number: true,\r
1754         }\r
1755       },\r
1756       revision: {\r
1757         type: 'number',\r
1758         rules : {\r
1759           required: true,\r
1760           number: true,\r
1761         }\r
1762       },\r
1763       ext: {\r
1764         type: 'text',\r
1765         rules : {\r
1766           required: true,\r
1767         }\r
1768       },\r
1769       width: {\r
1770         type: 'number',\r
1771         rules : {\r
1772           required: true,\r
1773           number: true,\r
1774         }\r
1775       },\r
1776       height: {\r
1777         type: 'number',\r
1778         rules : {\r
1779           required: true,\r
1780           number: true,\r
1781         }\r
1782       },\r
1783       filesize: {\r
1784         type: 'number',\r
1785         rules : {\r
1786           required: true,\r
1787           number: true,\r
1788         }\r
1789       },\r
1790       artist_id: {\r
1791         type: 'number',\r
1792         rules : {\r
1793           required: true,\r
1794           number: true,\r
1795         }\r
1796       },\r
1797       license_id: {\r
1798         type: 'number',\r
1799         rules : {\r
1800           required: true,\r
1801           number: true,\r
1802         }\r
1803       },\r
1804       md5: {\r
1805         type: 'text',\r
1806         rules : {\r
1807           required: true,\r
1808         }\r
1809       },\r
1810       artist_name: {\r
1811         type: 'text',\r
1812         rules : {\r
1813           required: true,\r
1814         }\r
1815       },\r
1816       credit: {\r
1817         type: 'text',\r
1818         rules : {\r
1819         }\r
1820       },\r
1821       settings: {\r
1822         type: 'text',\r
1823         rules : {\r
1824         }\r
1825       },\r
1826       classname: {\r
1827         type: 'text',\r
1828         rules : {\r
1829           required: true,\r
1830         }\r
1831       },\r
1832       created_at: {\r
1833         type: 'datetime',\r
1834       },\r
1835       updated_at: {\r
1836         type: 'datetime',\r
1837       }\r
1838     }\r
1839   },\r
1840   resource_picture: {\r
1841     class_name: 'ResourcePicture',\r
1842     table_name: 'resource_pictures',\r
1843     associations: {\r
1844       belongs_to: {\r
1845         original_picture: {\r
1846           id_column: 'original_picture_id'\r
1847         }, \r
1848         license: {\r
1849           id_column: 'license_id'\r
1850         }, \r
1851         artist: {\r
1852           id_column: 'artist_id'\r
1853         }, \r
1854       },\r
1855       has_many: {\r
1856       },\r
1857       has_one: {\r
1858       },\r
1859     },\r
1860     attributes: {\r
1861       id: {\r
1862         type: 'number',\r
1863         primary_key: 1,\r
1864         rules : {\r
1865           number: true,\r
1866         }\r
1867       },\r
1868       original_picture_id: {\r
1869         type: 'number',\r
1870         rules : {\r
1871           required: true,\r
1872           number: true,\r
1873         }\r
1874       },\r
1875       revision: {\r
1876         type: 'number',\r
1877         rules : {\r
1878           required: true,\r
1879           number: true,\r
1880         }\r
1881       },\r
1882       ext: {\r
1883         type: 'text',\r
1884         rules : {\r
1885           required: true,\r
1886         }\r
1887       },\r
1888       width: {\r
1889         type: 'number',\r
1890         rules : {\r
1891           required: true,\r
1892           number: true,\r
1893         }\r
1894       },\r
1895       height: {\r
1896         type: 'number',\r
1897         rules : {\r
1898           required: true,\r
1899           number: true,\r
1900         }\r
1901       },\r
1902       filesize: {\r
1903         type: 'number',\r
1904         rules : {\r
1905           required: true,\r
1906           number: true,\r
1907         }\r
1908       },\r
1909       artist_id: {\r
1910         type: 'number',\r
1911         rules : {\r
1912           required: true,\r
1913           number: true,\r
1914         }\r
1915       },\r
1916       license_id: {\r
1917         type: 'number',\r
1918         rules : {\r
1919           required: true,\r
1920           number: true,\r
1921         }\r
1922       },\r
1923       md5: {\r
1924         type: 'text',\r
1925         rules : {\r
1926           required: true,\r
1927         }\r
1928       },\r
1929       artist_name: {\r
1930         type: 'text',\r
1931         rules : {\r
1932           required: true,\r
1933         }\r
1934       },\r
1935       credit: {\r
1936         type: 'text',\r
1937         rules : {\r
1938         }\r
1939       },\r
1940       settings: {\r
1941         type: 'text',\r
1942         rules : {\r
1943         }\r
1944       },\r
1945       picture_id: {\r
1946         type: 'number',\r
1947         rules : {\r
1948           required: true,\r
1949           number: true,\r
1950         }\r
1951       },\r
1952       classname: {\r
1953         type: 'text',\r
1954         rules : {\r
1955           required: true,\r
1956         }\r
1957       },\r
1958       created_at: {\r
1959         type: 'datetime',\r
1960       },\r
1961       updated_at: {\r
1962         type: 'datetime',\r
1963       }\r
1964     },\r
1965     lists: {\r
1966       public_list: {\r
1967         type: 'public',\r
1968       },\r
1969       private_list: {\r
1970         type: 'private',\r
1971       },\r
1972       by_license: {\r
1973         type: 'filter',\r
1974         args: {\r
1975           from: 'license',\r
1976           filter_key: 'license_id',\r
1977         },\r
1978       },\r
1979       by_artist: {\r
1980         type: 'filter',\r
1981         args: {\r
1982           from: 'artist',\r
1983           filter_key: 'artist_id',\r
1984         },\r
1985       },\r
1986     },\r
1987   },\r
1988   speech_balloon_template: {\r
1989     class_name: 'SpeechBalloonTemplate',\r
1990     table_name: 'speech_balloon_templates',\r
1991     associations: {\r
1992       belongs_to: {\r
1993         system_picture: {\r
1994           id_column: 'system_picture_id'\r
1995         }, \r
1996       },\r
1997       has_many: {\r
1998         speech_balloons: {\r
1999           foreign_key: 'speech_balloon_template_id',\r
2000           model: 'speech_balloon',\r
2001         }, \r
2002         panels: {\r
2003           through: 'speech_balloons',\r
2004           foreign_key: 'speech_balloon_template_id',\r
2005           model: 'panel',\r
2006         }, \r
2007       },\r
2008       has_one: {\r
2009       },\r
2010     },\r
2011     attributes: {\r
2012       id: {\r
2013         type: 'number',\r
2014         primary_key: 1,\r
2015         rules : {\r
2016           number: true,\r
2017         }\r
2018       },\r
2019       name: {\r
2020         type: 'text',\r
2021         rules : {\r
2022           required: true,\r
2023         }\r
2024       },\r
2025       classname: {\r
2026         type: 'text',\r
2027         rules : {\r
2028           required: true,\r
2029         }\r
2030       },\r
2031       caption: {\r
2032         type: 'text',\r
2033         rules : {\r
2034           required: true,\r
2035         }\r
2036       },\r
2037       t: {\r
2038         type: 'number',\r
2039         rules : {\r
2040           required: true,\r
2041           number: true,\r
2042           min: 0,\r
2043         }\r
2044       },\r
2045       system_picture_id: {\r
2046         type: 'number',\r
2047         rules : {\r
2048           required: true,\r
2049           number: true,\r
2050         }\r
2051       },\r
2052       settings: {\r
2053         type: 'text',\r
2054         rules : {\r
2055           required: true,\r
2056         }\r
2057       },\r
2058       created_at: {\r
2059         type: 'datetime',\r
2060       },\r
2061       updated_at: {\r
2062         type: 'datetime',\r
2063       }\r
2064     },\r
2065     lists: {\r
2066       public_list: {\r
2067         type: 'public',\r
2068       },\r
2069       select_items: {\r
2070         type: 'system_resource',\r
2071       },\r
2072       speech_balloons: {\r
2073         type: 'has_many',\r
2074         args: {\r
2075           association_name: 'speech_balloons',\r
2076         },\r
2077       },\r
2078       panels: {\r
2079         type: 'has_many',\r
2080         args: {\r
2081           association_name: 'panels',\r
2082         },\r
2083       },\r
2084     },\r
2085   },\r
2086   writing_format: {\r
2087     class_name: 'WritingFormat',\r
2088     table_name: 'writing_formats',\r
2089     associations: {\r
2090       belongs_to: {\r
2091         system_picture: {\r
2092           id_column: 'system_picture_id'\r
2093         }, \r
2094       },\r
2095       has_many: {\r
2096         speeches: {\r
2097           foreign_key: 'writing_format_id',\r
2098           model: 'speech',\r
2099         }, \r
2100       },\r
2101       has_one: {\r
2102       },\r
2103     },\r
2104     attributes: {\r
2105       id: {\r
2106         type: 'number',\r
2107         primary_key: 1,\r
2108         rules : {\r
2109           number: true,\r
2110         }\r
2111       },\r
2112       name: {\r
2113         type: 'text',\r
2114         rules : {\r
2115           required: true,\r
2116         }\r
2117       },\r
2118       classname: {\r
2119         type: 'text',\r
2120         rules : {\r
2121           required: true,\r
2122         }\r
2123       },\r
2124       caption: {\r
2125         type: 'text',\r
2126         rules : {\r
2127           required: true,\r
2128         }\r
2129       },\r
2130       system_picture_id: {\r
2131         type: 'number',\r
2132         rules : {\r
2133           required: true,\r
2134           number: true,\r
2135         }\r
2136       },\r
2137       settings: {\r
2138         type: 'text',\r
2139         rules : {\r
2140           required: true,\r
2141         }\r
2142       },\r
2143       created_at: {\r
2144         type: 'datetime',\r
2145       },\r
2146       updated_at: {\r
2147         type: 'datetime',\r
2148       }\r
2149     },\r
2150     lists: {\r
2151       public_list: {\r
2152         type: 'public',\r
2153       },\r
2154       select_items: {\r
2155         type: 'system_resource',\r
2156       },\r
2157       speeches: {\r
2158         type: 'has_many',\r
2159         args: {\r
2160           association_name: 'speeches',\r
2161         },\r
2162       },\r
2163       by_system_picture: {\r
2164         type: 'filter',\r
2165         args: {\r
2166           from: 'system_picture',\r
2167           filter_key: 'system_picture_id',\r
2168         },\r
2169       },\r
2170     },\r
2171   },\r
2172   license_group: {\r
2173     class_name: 'LicenseGroup',\r
2174     table_name: 'license_groups',\r
2175     associations: {\r
2176       belongs_to: {\r
2177       },\r
2178       has_many: {\r
2179         licenses: {\r
2180           foreign_key: 'license_group_id',\r
2181           model: 'license',\r
2182         }, \r
2183       },\r
2184       has_one: {\r
2185       },\r
2186     },\r
2187     attributes: {\r
2188       id: {\r
2189         type: 'number',\r
2190         primary_key: 1,\r
2191         rules : {\r
2192           number: true,\r
2193         }\r
2194       },\r
2195       name: {\r
2196         type: 'text',\r
2197         rules : {\r
2198           required: true,\r
2199         }\r
2200       },\r
2201       classname: {\r
2202         type: 'text',\r
2203         rules : {\r
2204           required: true,\r
2205         }\r
2206       },\r
2207       caption: {\r
2208         type: 'text',\r
2209         rules : {\r
2210           required: true,\r
2211         }\r
2212       },\r
2213       url: {\r
2214         type: 'text',\r
2215         rules : {\r
2216           required: true,\r
2217         }\r
2218       },\r
2219       created_at: {\r
2220         type: 'datetime',\r
2221       },\r
2222       updated_at: {\r
2223         type: 'datetime',\r
2224       }\r
2225     },\r
2226     lists: {\r
2227       public_list: {\r
2228         type: 'public',\r
2229       },\r
2230       select_items: {\r
2231         type: 'system_resource',\r
2232       },\r
2233       licenses: {\r
2234         type: 'has_many',\r
2235         args: {\r
2236           association_name: 'licenses',\r
2237         },\r
2238       },\r
2239     },\r
2240   },\r
2241   license: {\r
2242     class_name: 'License',\r
2243     table_name: 'licenses',\r
2244     associations: {\r
2245       belongs_to: {\r
2246         license_group: {\r
2247           id_column: 'license_group_id'\r
2248         }, \r
2249         system_picture: {\r
2250           id_column: 'system_picture_id'\r
2251         }, \r
2252       },\r
2253       has_many: {\r
2254         resource_pictures: {\r
2255           foreign_key: 'license_id',\r
2256           model: 'resource_picture',\r
2257         }, \r
2258       },\r
2259       has_one: {\r
2260       },\r
2261     },\r
2262     attributes: {\r
2263       id: {\r
2264         type: 'number',\r
2265         primary_key: 1,\r
2266         rules : {\r
2267           number: true,\r
2268         }\r
2269       },\r
2270       license_group_id: {\r
2271         type: 'number',\r
2272         rules : {\r
2273           number: true,\r
2274         }\r
2275       },\r
2276       name: {\r
2277         type: 'text',\r
2278         rules : {\r
2279           required: true,\r
2280         }\r
2281       },\r
2282       caption: {\r
2283         type: 'text',\r
2284         rules : {\r
2285           required: true,\r
2286         }\r
2287       },\r
2288       system_picture_id: {\r
2289         type: 'number',\r
2290         rules : {\r
2291           required: true,\r
2292           number: true,\r
2293         }\r
2294       },\r
2295       url: {\r
2296         type: 'text',\r
2297         rules : {\r
2298           required: true,\r
2299         }\r
2300       },\r
2301       settings: {\r
2302         type: 'text',\r
2303         rules : {\r
2304         }\r
2305       },\r
2306       credit_pictures: {\r
2307         type: 'text',\r
2308         rules : {\r
2309         }\r
2310       },\r
2311       created_at: {\r
2312         type: 'datetime',\r
2313       },\r
2314       updated_at: {\r
2315         type: 'datetime',\r
2316       }\r
2317     },\r
2318     lists: {\r
2319       public_list: {\r
2320         type: 'public',\r
2321       },\r
2322       resource_pictures: {\r
2323         type: 'has_many',\r
2324         args: {\r
2325           association_name: 'resource_pictures',\r
2326         },\r
2327       },\r
2328       by_license_group: {\r
2329         type: 'filter',\r
2330         args: {\r
2331           from: 'license_group',\r
2332           filter_key: 'license_group_id',\r
2333         },\r
2334       },\r
2335       by_system_picture: {\r
2336         type: 'filter',\r
2337         args: {\r
2338           from: 'system_picture',\r
2339           filter_key: 'system_picture_id',\r
2340         },\r
2341       },\r
2342     },\r
2343   },\r
2344   author: {\r
2345     class_name: 'Author',\r
2346     table_name: 'authors',\r
2347     associations: {\r
2348       belongs_to: {\r
2349       },\r
2350       has_many: {\r
2351         scrolls: {\r
2352           foreign_key: 'author_id',\r
2353           model: 'scroll',\r
2354         }, \r
2355         comics: {\r
2356           foreign_key: 'author_id',\r
2357           model: 'comic',\r
2358         }, \r
2359         stories: {\r
2360           foreign_key: 'author_id',\r
2361           model: 'story',\r
2362         }, \r
2363         sheets: {\r
2364           foreign_key: 'author_id',\r
2365           model: 'sheet',\r
2366         }, \r
2367         panels: {\r
2368           foreign_key: 'author_id',\r
2369           model: 'panel',\r
2370         }, \r
2371       },\r
2372       has_one: {\r
2373       },\r
2374     },\r
2375     attributes: {\r
2376       id: {\r
2377         type: 'number',\r
2378         primary_key: 1,\r
2379         rules : {\r
2380           number: true,\r
2381         }\r
2382       },\r
2383       name: {\r
2384         type: 'text',\r
2385         rules : {\r
2386           required: true,\r
2387         }\r
2388       },\r
2389       user_id: {\r
2390         type: 'number',\r
2391         rules : {\r
2392           required: true,\r
2393           number: true,\r
2394         }\r
2395       },\r
2396       created_at: {\r
2397         type: 'datetime',\r
2398       },\r
2399       updated_at: {\r
2400         type: 'datetime',\r
2401       }\r
2402     },\r
2403     lists: {\r
2404       public_list: {\r
2405         type: 'public',\r
2406       },\r
2407       scrolls: {\r
2408         type: 'has_many',\r
2409         args: {\r
2410           association_name: 'scrolls',\r
2411         },\r
2412       },\r
2413       comics: {\r
2414         type: 'has_many',\r
2415         args: {\r
2416           association_name: 'comics',\r
2417         },\r
2418       },\r
2419       stories: {\r
2420         type: 'has_many',\r
2421         args: {\r
2422           association_name: 'stories',\r
2423         },\r
2424       },\r
2425       sheets: {\r
2426         type: 'has_many',\r
2427         args: {\r
2428           association_name: 'sheets',\r
2429         },\r
2430       },\r
2431       panels: {\r
2432         type: 'has_many',\r
2433         args: {\r
2434           association_name: 'panels',\r
2435         },\r
2436       },\r
2437       panel_pictures: {\r
2438         type: 'has_many',\r
2439         args: {\r
2440           association_name: 'panel_pictures',\r
2441         },\r
2442       },\r
2443       speech_balloons: {\r
2444         type: 'has_many',\r
2445         args: {\r
2446           association_name: 'speech_balloons',\r
2447         },\r
2448       },\r
2449       ground_pictures: {\r
2450         type: 'has_many',\r
2451         args: {\r
2452           association_name: 'ground_pictures',\r
2453         },\r
2454       },\r
2455       ground_colors: {\r
2456         type: 'has_many',\r
2457         args: {\r
2458           association_name: 'ground_colors',\r
2459         },\r
2460       },\r
2461     },\r
2462   },\r
2463   artist: {\r
2464     class_name: 'Artist',\r
2465     table_name: 'artists',\r
2466     associations: {\r
2467       belongs_to: {\r
2468       },\r
2469       has_many: {\r
2470         resource_pictures: {\r
2471           foreign_key: 'artist_id',\r
2472           model: 'resource_picture',\r
2473         }, \r
2474       },\r
2475       has_one: {\r
2476       },\r
2477     },\r
2478     attributes: {\r
2479       id: {\r
2480         type: 'number',\r
2481         primary_key: 1,\r
2482         rules : {\r
2483           number: true,\r
2484         }\r
2485       },\r
2486       name: {\r
2487         type: 'text',\r
2488         rules : {\r
2489           required: true,\r
2490         }\r
2491       },\r
2492       author_id: {\r
2493         type: 'number',\r
2494         rules : {\r
2495           required: true,\r
2496           number: true,\r
2497         }\r
2498       },\r
2499       created_at: {\r
2500         type: 'datetime',\r
2501       },\r
2502       updated_at: {\r
2503         type: 'datetime',\r
2504       }\r
2505     },\r
2506     lists: {\r
2507       public_list: {\r
2508         type: 'public',\r
2509       },\r
2510       resource_pictures: {\r
2511         type: 'has_many',\r
2512         args: {\r
2513           association_name: 'resource_pictures',\r
2514         },\r
2515       },\r
2516     },\r
2517   },\r
2518   system_picture: {\r
2519     class_name: 'SystemPicture',\r
2520     table_name: 'system_pictures',\r
2521     associations: {\r
2522       belongs_to: {\r
2523       },\r
2524       has_many: {\r
2525         balloons: {\r
2526           foreign_key: 'system_picture_id',\r
2527           model: 'balloon',\r
2528         }, \r
2529         balloon_templates: {\r
2530           foreign_key: 'system_picture_id',\r
2531           model: 'balloon_template',\r
2532         }, \r
2533         licenses: {\r
2534           foreign_key: 'system_picture_id',\r
2535           model: 'license',\r
2536         }, \r
2537       },\r
2538       has_one: {\r
2539       },\r
2540     },\r
2541     attributes: {\r
2542       id: {\r
2543         type: 'number',\r
2544         primary_key: 1,\r
2545         rules : {\r
2546           number: true,\r
2547         }\r
2548       },\r
2549       ext: {\r
2550         type: 'text',\r
2551         rules : {\r
2552           required: true,\r
2553         }\r
2554       },\r
2555       width: {\r
2556         type: 'number',\r
2557         rules : {\r
2558           required: true,\r
2559           number: true,\r
2560         }\r
2561       },\r
2562       height: {\r
2563         type: 'number',\r
2564         rules : {\r
2565           required: true,\r
2566           number: true,\r
2567         }\r
2568       },\r
2569       filesize: {\r
2570         type: 'number',\r
2571         rules : {\r
2572           required: true,\r
2573           number: true,\r
2574         }\r
2575       },\r
2576       md5: {\r
2577         type: 'text',\r
2578         rules : {\r
2579           required: true,\r
2580           required: true,\r
2581         }\r
2582       },\r
2583       created_at: {\r
2584         type: 'datetime',\r
2585       },\r
2586       updated_at: {\r
2587         type: 'datetime',\r
2588       }\r
2589     },\r
2590     lists: {\r
2591       public_list: {\r
2592         type: 'public',\r
2593       },\r
2594     },\r
2595   },\r
2596 }\r
2597 \r