def post(data): # Create new session session = session_factory() lttkgp_user = user.User( "Default user", "1637563079601213", "https://user-images.githubusercontent.com/10023615/77320178-19fe9e00-6d36-11ea-9c0c-45f652a6da78.png", ) song_link = link.Link(data["link"], 0) session.add(lttkgp_user) session.commit()
def get_latest_posts(limit_): try: session = session_factory() posts = session.query(UserPosts).filter( UserPosts.share_date <= datetime.now()).limit(limit_).all() response = [format(post) for post in posts] return response, 200 except BaseException: LOG.error( f'Failed to fetch data with param limit_ = {limit_}. Try later.', exc_info=True) response_object = { 'status': 'fail', 'message': 'Try again', } return response_object, 500
def get_posts_in_interval(from_=datetime.now() - timedelta(days=3), to_=datetime.now()): try: session = session_factory() posts = session.query(UserPosts).filter(UserPosts.share_date >= from_) \ .filter(UserPosts.share_date <= to_).all() response = [format(post) for post in posts] return response, 200 except BaseException: LOG.error( f'Failed to fetch data with params from_ = {from_}, to_ = {to_}. Try later.', exc_info=True) response_object = { 'status': 'fail', 'message': 'Try again', } return response_object, 500
def get_popular_posts(to_=datetime.now(), past=1): try: session = session_factory() posts = session.query(UserPosts)\ .filter(UserPosts.share_date <= to_ + timedelta(days=1))\ .filter(UserPosts.share_date >= to_ - timedelta(days=past))\ .order_by(UserPosts.likes_count.desc()).all() response = [format(post) for post in posts] return response, 200 except BaseException: LOG.error( f'Failed to fetch data with param to_ = {to_}, past = {past}. Try later.', exc_info=True) response_object = { 'status': 'fail', 'message': 'Try again', } return response_object, 500
def format(post): session = session_factory() link = post.link song = link.song artists = [artist_song.artist for artist_song in session.query(ArtistSong) .filter(ArtistSong.song == song).all()] genres = [] for artist in artists: artist_genres = [artist_genre.genre for artist_genre in session.query(ArtistGenre) .filter(ArtistGenre.artist == artist).all()] genres += artist_genres return { 'link': link.url, 'post_count': link.post_count, 'postdata': post_dto.dump(post), 'metadata': { 'song': song_dto.dump(link.song), 'artists': [artist_dto.dump(artist) for artist in artists], 'genre': [genre.name for genre in genres] } }
def start(): session = session_factory() session.close()