@@ -16,20 +16,52 @@ class Users extends Model
16
16
class Posts extends Model
17
17
@timestamp : true
18
18
19
+ @relations : {
20
+ { " images" , has_many : " Images" }
21
+ }
22
+
19
23
@create_table : =>
20
24
drop_tables @
21
25
create_table @table_name !, {
22
26
{ " id" , types. id}
23
27
{ " user_id" , types. integer null : true }
24
- { " title" , types. text null : false }
25
- { " body" , types. text null : false }
28
+ { " title" , types. text null : true }
29
+ { " body" , types. text null : true }
26
30
{ " created_at" , types. datetime}
27
31
{ " updated_at" , types. datetime}
28
32
}
29
33
30
34
@truncate : =>
31
35
truncate_tables @
32
36
37
+ class Images extends Model
38
+ @primary_key : { " user_id" , " id" }
39
+ @timestamp : true
40
+
41
+ @relations : {
42
+ { " user" , belongs_to : " Users" }
43
+ { " post" , belongs_to : " Posts" }
44
+ }
45
+
46
+ @create_table : =>
47
+ drop_tables @
48
+ create_table @table_name !, {
49
+ { " post_id" , types. integer}
50
+ -- Can't use types.id for "id" because it specifies primary_key
51
+ { " id" , types. integer auto_increment : true }
52
+ { " user_id" , types. integer null : true }
53
+ { " url" , types. text null : false }
54
+ { " created_at" , types. datetime}
55
+ { " updated_at" , types. datetime}
56
+
57
+ " PRIMARY KEY (post_id, id)"
58
+ -- auto_increment must be a key of its own (PK or otherwise)
59
+ " KEY id (id)"
60
+ }
61
+
62
+ @truncate : =>
63
+ truncate_tables @
64
+
33
65
class Likes extends Model
34
66
@primary_key : { " user_id" , " post_id" }
35
67
@timestamp : true
@@ -44,7 +76,7 @@ class Likes extends Model
44
76
create_table @table_name !, {
45
77
{ " user_id" , types. integer}
46
78
{ " post_id" , types. integer}
47
- { " count" , types. integer}
79
+ { " count" , types. integer default : 0 }
48
80
{ " created_at" , types. datetime}
49
81
{ " updated_at" , types. datetime}
50
82
@@ -54,4 +86,4 @@ class Likes extends Model
54
86
@truncate : =>
55
87
truncate_tables @
56
88
57
- { : Users , : Posts , : Likes }
89
+ { : Users , : Posts , : Images , : Likes }
0 commit comments