25 if obj is None: |
25 if obj is None: |
26 return None |
26 return None |
27 else: |
27 else: |
28 return anyjson.serialize(obj) |
28 return anyjson.serialize(obj) |
29 |
29 |
|
30 class EntityType(Base): |
|
31 __tablename__ = "tweet_entity_type" |
|
32 id = Column(Integer, primary_key=True, autoincrement=True) |
|
33 label = Column(String) |
|
34 |
30 class Entity(Base): |
35 class Entity(Base): |
31 __tablename__ = "tweet_entity" |
36 __tablename__ = "tweet_entity" |
32 id = Column(Integer, primary_key = True) |
37 id = Column(Integer, primary_key=True) |
33 tweet_id = Column(BigInteger, ForeignKey('tweet_tweet.id')) |
38 tweet_id = Column(BigInteger, ForeignKey('tweet_tweet.id')) |
34 #tweet = relationship(Tweet, primaryjoin = tweet_id == Tweet.id) |
|
35 type = Column(String) |
39 type = Column(String) |
|
40 entity_type_id = Column(Integer, ForeignKey('tweet_entity_type.id'), nullable=False) |
|
41 entity_type = relationship("EntityType", backref="entities") |
36 indice_start = Column(Integer) |
42 indice_start = Column(Integer) |
37 indice_end = Column(Integer) |
43 indice_end = Column(Integer) |
38 __mapper_args__ = {'polymorphic_on': type} |
44 source = Column(String) |
39 |
45 __mapper_args__ = {'polymorphic_on': type, 'polymorphic_identity': 'entity_entity', 'with_polymorphic':'*'} |
40 def __init__(self, **kwargs): |
46 |
41 for key, value in kwargs.items(): |
47 def __init__(self, **kwargs): |
42 if hasattr(self,key): |
48 for key, value in kwargs.items(): |
43 setattr(self,key,value) |
49 if hasattr(self, key): |
|
50 setattr(self, key, value) |
44 |
51 |
45 class TweetSource(Base): |
52 class TweetSource(Base): |
46 __tablename__ = 'tweet_tweet_source' |
53 __tablename__ = 'tweet_tweet_source' |
47 id = Column(Integer, primary_key = True, autoincrement=True) |
54 id = Column(Integer, primary_key=True, autoincrement=True) |
48 original_json = Column(String) |
55 original_json = Column(String) |
49 received_at = Column(DateTime, default=datetime.datetime.now()) |
56 received_at = Column(DateTime, default=datetime.datetime.now(), index=True) |
50 |
57 |
51 def __init__(self, **kwargs): |
58 def __init__(self, **kwargs): |
52 for key, value in kwargs.items(): |
59 for key, value in kwargs.items(): |
53 if hasattr(self,key): |
60 if hasattr(self, key): |
54 setattr(self,key,value) |
61 setattr(self, key, value) |
55 |
62 |
56 |
63 |
57 class TweetLog(Base): |
64 class TweetLog(Base): |
58 |
65 |
59 TWEET_STATUS = { |
66 TWEET_STATUS = { |
60 'OK' : 1, |
67 'OK' : 1, |
61 'ERROR' : 2, |
68 'ERROR' : 2, |
62 } |
69 } |
63 |
70 |
64 __tablename__ = 'tweet_tweet_log' |
71 __tablename__ = 'tweet_tweet_log' |
65 id = Column(Integer, primary_key = True, autoincrement=True) |
72 id = Column(Integer, primary_key=True, autoincrement=True) |
66 tweet_source_id = Column(Integer, ForeignKey('tweet_tweet_source.id')) |
73 tweet_source_id = Column(Integer, ForeignKey('tweet_tweet_source.id')) |
67 tweet_source = relationship("TweetSource", backref="logs") |
74 tweet_source = relationship("TweetSource", backref="logs") |
68 status = Column(Integer) |
75 status = Column(Integer) |
69 error = Column(String) |
76 error = Column(String) |
70 error_stack = Column(String) |
77 error_stack = Column(String) |
74 __tablename__ = 'tweet_tweet' |
81 __tablename__ = 'tweet_tweet' |
75 |
82 |
76 id = Column(BigInteger, primary_key=True, autoincrement=False) |
83 id = Column(BigInteger, primary_key=True, autoincrement=False) |
77 id_str = Column(String) |
84 id_str = Column(String) |
78 contributors = Column(String) |
85 contributors = Column(String) |
79 coordinates = Column(String) |
86 coordinates = Column(String) |
80 created_at = Column(DateTime) |
87 created_at = Column(DateTime) |
81 favorited = Column(Boolean) |
88 favorited = Column(Boolean) |
82 geo = Column(String) |
89 geo = Column(String) |
83 in_reply_to_screen_name = Column(String) |
90 in_reply_to_screen_name = Column(String) |
84 in_reply_to_status_id = Column(BigInteger) |
91 in_reply_to_status_id = Column(BigInteger) |
85 in_reply_to_status_id_str = Column(String) |
92 in_reply_to_status_id_str = Column(String) |
86 in_reply_to_user_id = Column(Integer) |
93 in_reply_to_user_id = Column(BigInteger) |
87 in_reply_to_user_id_str = Column(String) |
94 in_reply_to_user_id_str = Column(String) |
88 place = Column(String) |
95 place = Column(String) |
89 retweet_count = Column(Integer) |
96 retweet_count = Column(String) |
90 retweeted = Column(Boolean) |
97 retweeted = Column(Boolean) |
91 source = Column(String) |
98 source = Column(String) |
92 text = Column(String) |
99 text = Column(String) |
93 truncated = Column(Boolean) |
100 truncated = Column(Boolean) |
94 user_id = Column(Integer, ForeignKey('tweet_user.id')) |
101 user_id = Column(Integer, ForeignKey('tweet_user.id')) |
95 user = relationship("User", backref="tweets") |
102 user = relationship("User", backref="tweets") |
96 tweet_source_id = Column(Integer, ForeignKey('tweet_tweet_source.id')) |
103 tweet_source_id = Column(Integer, ForeignKey('tweet_tweet_source.id')) |
97 tweet_source = relationship("TweetSource", backref="tweet") |
104 tweet_source = relationship("TweetSource", backref="tweet") |
98 entity_list = relationship(Entity, backref='tweet') |
105 entity_list = relationship(Entity, backref='tweet') |
99 received_at = Column(DateTime, default=datetime.datetime.now()) |
106 received_at = Column(DateTime, default=datetime.datetime.now(), index=True) |
100 |
107 |
101 def __init__(self, **kwargs): |
108 def __init__(self, **kwargs): |
102 for key, value in kwargs.items(): |
109 for key, value in kwargs.items(): |
103 if hasattr(self,key): |
110 if hasattr(self, key): |
104 setattr(self,key,value) |
111 setattr(self, key, value) |
105 |
112 |
106 class UserMessage(Base): |
113 class UserMessage(Base): |
107 __tablename__ = "tweet_user_message" |
114 __tablename__ = "tweet_user_message" |
108 |
115 |
109 id = Column(Integer, primary_key = True) |
116 id = Column(Integer, primary_key=True) |
110 user_id = Column(Integer, ForeignKey('tweet_user.id')) |
117 user_id = Column(Integer, ForeignKey('tweet_user.id')) |
111 user = relationship("User", backref="messages") |
118 user = relationship("User", backref="messages") |
112 created_at = Column(DateTime, default=datetime.datetime.now()) |
119 created_at = Column(DateTime, default=datetime.datetime.now()) |
113 message_id = Column(Integer, ForeignKey('tweet_message.id')) |
120 message_id = Column(Integer, ForeignKey('tweet_message.id')) |
114 |
121 |
115 class Message(Base): |
122 class Message(Base): |
116 __tablename__ = "tweet_message" |
123 __tablename__ = "tweet_message" |
117 |
124 |
118 id = Column(Integer, primary_key = True) |
125 id = Column(Integer, primary_key=True) |
119 created_at = Column(DateTime, default=datetime.datetime.now()) |
126 created_at = Column(DateTime, default=datetime.datetime.now()) |
120 text = Column(String) |
127 text = Column(String) |
121 users = relationship(UserMessage, backref='message') |
128 users = relationship(UserMessage, backref='message') |
122 |
129 |
123 |
130 |
124 class User(Base): |
131 class User(Base): |
125 __tablename__ = "tweet_user" |
132 __tablename__ = "tweet_user" |
126 |
133 |
127 id = Column(Integer, primary_key = True, autoincrement=False) |
134 id = Column(BigInteger, primary_key=True, autoincrement=False) |
128 id_str= Column(String) |
135 id_str = Column(String) |
129 contributors_enabled= Column(Boolean) |
136 contributors_enabled = Column(Boolean) |
130 created_at= Column(DateTime) |
137 created_at = Column(DateTime) |
131 description= Column(String) |
138 description = Column(String) |
132 favourites_count = Column(Integer) |
139 favourites_count = Column(Integer) |
133 follow_request_sent = Column(Boolean) |
140 follow_request_sent = Column(Boolean) |
134 followers_count = Column(Integer) |
141 followers_count = Column(Integer) |
135 following = Column(String) |
142 following = Column(String) |
136 friends_count = Column(Integer) |
143 friends_count = Column(Integer) |
137 geo_enabled= Column(Boolean) |
144 geo_enabled = Column(Boolean) |
138 is_translator= Column(Boolean) |
145 is_translator = Column(Boolean) |
139 lang = Column(String) |
146 lang = Column(String) |
140 listed_count = Column(Integer) |
147 listed_count = Column(Integer) |
141 location= Column(String) |
148 location = Column(String) |
142 name = Column(String) |
149 name = Column(String) |
143 notifications = Column(String) |
150 notifications = Column(String) |
144 profile_background_color= Column(String) |
151 profile_background_color = Column(String) |
145 profile_background_image_url= Column(String) |
152 profile_background_image_url = Column(String) |
146 profile_background_tile= Column(Boolean) |
153 profile_background_tile = Column(Boolean) |
147 profile_image_url= Column(String) |
154 profile_image_url = Column(String) |
148 profile_link_color= Column(String) |
155 profile_link_color = Column(String) |
149 profile_sidebar_border_color= Column(String) |
156 profile_sidebar_border_color = Column(String) |
150 profile_sidebar_fill_color= Column(String) |
157 profile_sidebar_fill_color = Column(String) |
151 profile_text_color= Column(String) |
158 profile_text_color = Column(String) |
152 profile_use_background_image= Column(Boolean) |
159 profile_use_background_image = Column(Boolean) |
153 protected= Column(Boolean) |
160 protected = Column(Boolean) |
154 screen_name= Column(String, index=True, unique=True) |
161 screen_name = Column(String, index=True, unique=True) |
155 show_all_inline_media= Column(Boolean) |
162 show_all_inline_media = Column(Boolean) |
156 statuses_count = Column(Integer) |
163 statuses_count = Column(Integer) |
157 time_zone= Column(String) |
164 time_zone = Column(String) |
158 url= Column(String) |
165 url = Column(String) |
159 utc_offset = Column(Integer) |
166 utc_offset = Column(Integer) |
160 verified= Column(Boolean) |
167 verified = Column(Boolean) |
161 |
168 |
162 def __init__(self, **kwargs): |
169 def __init__(self, **kwargs): |
163 for key, value in kwargs.items(): |
170 for key, value in kwargs.items(): |
164 if hasattr(self,key): |
171 if hasattr(self, key): |
165 setattr(self,key,value) |
172 setattr(self, key, value) |
166 |
173 |
167 |
174 |
168 class Hashtag(Base): |
175 class Hashtag(Base): |
169 __tablename__ = "tweet_hashtag" |
176 __tablename__ = "tweet_hashtag" |
170 id = Column(Integer, primary_key=True) |
177 id = Column(Integer, primary_key=True) |
171 text = Column(String, unique = True, index = True) |
178 text = Column(String, unique=True, index=True) |
172 def __init__(self, **kwargs): |
179 def __init__(self, **kwargs): |
173 for key, value in kwargs.items(): |
180 for key, value in kwargs.items(): |
174 if hasattr(self,key): |
181 if hasattr(self, key): |
175 setattr(self,key,value) |
182 setattr(self, key, value) |
176 |
|
177 |
|
178 |
183 |
179 class Url(Base): |
184 class Url(Base): |
180 __tablename__ = "tweet_url" |
185 __tablename__ = "tweet_url" |
181 id = Column(Integer, primary_key=True) |
186 id = Column(Integer, primary_key=True) |
182 url = Column(String, unique=True) |
187 url = Column(String, unique=True) |
183 expanded_url = Column(String) |
188 expanded_url = Column(String) |
184 def __init__(self, **kwargs): |
189 def __init__(self, **kwargs): |
185 for key, value in kwargs.items(): |
190 for key, value in kwargs.items(): |
186 if hasattr(self,key): |
191 if hasattr(self, key): |
187 setattr(self,key,value) |
192 setattr(self, key, value) |
|
193 |
|
194 class MediaType(Base): |
|
195 __tablename__ = "tweet_media_type" |
|
196 id = Column(Integer, primary_key=True, autoincrement=True) |
|
197 label = Column(String, unique=True, index=True) |
|
198 def __init__(self, **kwargs): |
|
199 for key, value in kwargs.items(): |
|
200 if hasattr(self, key): |
|
201 setattr(self, key, value) |
|
202 |
|
203 |
|
204 class Media(Base): |
|
205 __tablename__ = "tweet_media" |
|
206 id = Column(BigInteger, primary_key=True, autoincrement=False) |
|
207 id_str = Column(String, unique=True) |
|
208 media_url = Column(String, unique=True) |
|
209 media_url_https = Column(String, unique=True) |
|
210 url = Column(String) |
|
211 display_url = Column(String) |
|
212 expanded_url = Column(String) |
|
213 sizes = Column(String) |
|
214 type_id = Column(Integer, ForeignKey("tweet_media_type.id")) |
|
215 type = relationship(MediaType, primaryjoin=type_id == MediaType.id) |
|
216 def __init__(self, **kwargs): |
|
217 for key, value in kwargs.items(): |
|
218 if hasattr(self, key): |
|
219 setattr(self, key, value) |
188 |
220 |
189 |
221 |
190 |
222 |
191 class EntityHashtag(Entity): |
223 class EntityHashtag(Entity): |
192 __tablename__ = "tweet_entity_hashtag" |
224 __tablename__ = "tweet_entity_hashtag" |
208 url_id = Column(Integer, ForeignKey("tweet_url.id")) |
240 url_id = Column(Integer, ForeignKey("tweet_url.id")) |
209 url = relationship(Url, primaryjoin=url_id == Url.id) |
241 url = relationship(Url, primaryjoin=url_id == Url.id) |
210 def __init__(self, **kwargs): |
242 def __init__(self, **kwargs): |
211 super(EntityUrl, self).__init__(**kwargs) |
243 super(EntityUrl, self).__init__(**kwargs) |
212 for key, value in kwargs.items(): |
244 for key, value in kwargs.items(): |
213 if hasattr(self,key): |
245 if hasattr(self, key): |
214 setattr(self,key,value) |
246 setattr(self, key, value) |
215 |
247 |
216 class EntityUser(Entity): |
248 class EntityUser(Entity): |
217 __tablename__ = "tweet_entity_user" |
249 __tablename__ = "tweet_entity_user" |
218 __mapper_args__ = {'polymorphic_identity': 'entity_user'} |
250 __mapper_args__ = {'polymorphic_identity': 'entity_user'} |
219 id = Column(Integer, ForeignKey('tweet_entity.id'), primary_key=True) |
251 id = Column(Integer, ForeignKey('tweet_entity.id'), primary_key=True) |
220 user_id = Column(Integer, ForeignKey('tweet_user.id')) |
252 user_id = Column(BigInteger, ForeignKey('tweet_user.id')) |
221 user = relationship(User, primaryjoin=user_id == User.id) |
253 user = relationship(User, primaryjoin=(user_id == User.id)) |
222 |
254 |
223 def __init__(self, **kwargs): |
255 def __init__(self, **kwargs): |
224 super(EntityUser, self).__init__(**kwargs) |
256 super(EntityUser, self).__init__(**kwargs) |
225 for key, value in kwargs.items(): |
257 for key, value in kwargs.items(): |
226 if hasattr(self,key): |
258 if hasattr(self, key): |
227 setattr(self,key,value) |
259 setattr(self, key, value) |
228 |
260 |
|
261 class EntityMedia(Entity): |
|
262 __tablename__ = "tweet_entity_media" |
|
263 __mapper_args__ = {'polymorphic_identity': 'entity_media'} |
|
264 id = Column(Integer, ForeignKey('tweet_entity.id'), primary_key=True) |
|
265 media_id = Column(BigInteger, ForeignKey('tweet_media.id')) |
|
266 media = relationship(Media, primaryjoin=(media_id == Media.id)) |
|
267 |
|
268 def __init__(self, **kwargs): |
|
269 super(EntityMedia, self).__init__(**kwargs) |
|
270 for key, value in kwargs.items(): |
|
271 if hasattr(self, key): |
|
272 setattr(self, key, value) |
|
273 |
229 |
274 |
230 def setup_database(*args, **kwargs): |
275 def setup_database(*args, **kwargs): |
231 |
276 |
232 create_all = True |
277 create_all = True |
233 if "create_all" in kwargs: |
278 if "create_all" in kwargs: |