Added created and updated timestamp to DB for series, episodes and movies

pull/2733/head
morpheus65535 4 months ago committed by GitHub
parent f58c863007
commit 678443f212
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -136,6 +136,7 @@ class TableEpisodes(Base):
audio_codec = mapped_column(Text) audio_codec = mapped_column(Text)
audio_language = mapped_column(Text) audio_language = mapped_column(Text)
created_at_timestamp = mapped_column(DateTime)
episode = mapped_column(Integer, nullable=False) episode = mapped_column(Integer, nullable=False)
episode_file_id = mapped_column(Integer) episode_file_id = mapped_column(Integer)
failedAttempts = mapped_column(Text) failedAttempts = mapped_column(Text)
@ -152,6 +153,7 @@ class TableEpisodes(Base):
sonarrSeriesId = mapped_column(Integer, ForeignKey('table_shows.sonarrSeriesId', ondelete='CASCADE')) sonarrSeriesId = mapped_column(Integer, ForeignKey('table_shows.sonarrSeriesId', ondelete='CASCADE'))
subtitles = mapped_column(Text) subtitles = mapped_column(Text)
title = mapped_column(Text, nullable=False) title = mapped_column(Text, nullable=False)
updated_at_timestamp = mapped_column(DateTime)
video_codec = mapped_column(Text) video_codec = mapped_column(Text)
@ -213,6 +215,7 @@ class TableMovies(Base):
alternativeTitles = mapped_column(Text) alternativeTitles = mapped_column(Text)
audio_codec = mapped_column(Text) audio_codec = mapped_column(Text)
audio_language = mapped_column(Text) audio_language = mapped_column(Text)
created_at_timestamp = mapped_column(DateTime)
failedAttempts = mapped_column(Text) failedAttempts = mapped_column(Text)
fanart = mapped_column(Text) fanart = mapped_column(Text)
ffprobe_cache = mapped_column(LargeBinary) ffprobe_cache = mapped_column(LargeBinary)
@ -234,6 +237,7 @@ class TableMovies(Base):
tags = mapped_column(Text) tags = mapped_column(Text)
title = mapped_column(Text, nullable=False) title = mapped_column(Text, nullable=False)
tmdbId = mapped_column(Text, nullable=False, unique=True) tmdbId = mapped_column(Text, nullable=False, unique=True)
updated_at_timestamp = mapped_column(DateTime)
video_codec = mapped_column(Text) video_codec = mapped_column(Text)
year = mapped_column(Text) year = mapped_column(Text)
@ -271,6 +275,7 @@ class TableShows(Base):
tvdbId = mapped_column(Integer) tvdbId = mapped_column(Integer)
alternativeTitles = mapped_column(Text) alternativeTitles = mapped_column(Text)
audio_language = mapped_column(Text) audio_language = mapped_column(Text)
created_at_timestamp = mapped_column(DateTime)
fanart = mapped_column(Text) fanart = mapped_column(Text)
imdbId = mapped_column(Text) imdbId = mapped_column(Text)
monitored = mapped_column(Text) monitored = mapped_column(Text)
@ -283,6 +288,7 @@ class TableShows(Base):
sortTitle = mapped_column(Text) sortTitle = mapped_column(Text)
tags = mapped_column(Text) tags = mapped_column(Text)
title = mapped_column(Text, nullable=False) title = mapped_column(Text, nullable=False)
updated_at_timestamp = mapped_column(DateTime)
year = mapped_column(Text) year = mapped_column(Text)

@ -5,6 +5,7 @@ import logging
from constants import MINIMUM_VIDEO_SIZE from constants import MINIMUM_VIDEO_SIZE
from sqlalchemy.exc import IntegrityError from sqlalchemy.exc import IntegrityError
from datetime import datetime
from app.config import settings from app.config import settings
from utilities.path_mappings import path_mappings from utilities.path_mappings import path_mappings
@ -49,6 +50,7 @@ def get_movie_file_size_from_db(movie_path):
# Update movies in DB # Update movies in DB
def update_movie(updated_movie, send_event): def update_movie(updated_movie, send_event):
try: try:
updated_movie['updated_at_timestamp'] = datetime.now()
database.execute( database.execute(
update(TableMovies).values(updated_movie) update(TableMovies).values(updated_movie)
.where(TableMovies.tmdbId == updated_movie['tmdbId'])) .where(TableMovies.tmdbId == updated_movie['tmdbId']))
@ -75,6 +77,7 @@ def get_movie_monitored_status(movie_id):
# Insert new movies in DB # Insert new movies in DB
def add_movie(added_movie, send_event): def add_movie(added_movie, send_event):
try: try:
added_movie['created_at_timestamp'] = datetime.now()
database.execute( database.execute(
insert(TableMovies) insert(TableMovies)
.values(added_movie)) .values(added_movie))
@ -296,6 +299,7 @@ def update_one_movie(movie_id, action, defer_search=False):
# Update existing movie in DB # Update existing movie in DB
elif movie and existing_movie: elif movie and existing_movie:
try: try:
movie['updated_at_timestamp'] = datetime.now()
database.execute( database.execute(
update(TableMovies) update(TableMovies)
.values(movie) .values(movie)
@ -312,6 +316,7 @@ def update_one_movie(movie_id, action, defer_search=False):
# Insert new movie in DB # Insert new movie in DB
elif movie and not existing_movie: elif movie and not existing_movie:
try: try:
movie['created_at_timestamp'] = datetime.now()
database.execute( database.execute(
insert(TableMovies) insert(TableMovies)
.values(movie)) .values(movie))

@ -5,6 +5,7 @@ import logging
from constants import MINIMUM_VIDEO_SIZE from constants import MINIMUM_VIDEO_SIZE
from sqlalchemy.exc import IntegrityError from sqlalchemy.exc import IntegrityError
from datetime import datetime
from app.database import database, TableShows, TableEpisodes, delete, update, insert, select from app.database import database, TableShows, TableEpisodes, delete, update, insert, select
from app.config import settings from app.config import settings
@ -149,9 +150,11 @@ def sync_episodes(series_id, send_event=True):
if len(episodes_to_add): if len(episodes_to_add):
for added_episode in episodes_to_add: for added_episode in episodes_to_add:
try: try:
added_episode['created_at_timestamp'] = datetime.now()
database.execute(insert(TableEpisodes).values(added_episode)) database.execute(insert(TableEpisodes).values(added_episode))
except IntegrityError as e: except IntegrityError as e:
logging.error(f"BAZARR cannot insert episodes because of {e}. We'll try to update it instead.") logging.error(f"BAZARR cannot insert episodes because of {e}. We'll try to update it instead.")
del added_episode['created_at_timestamp']
episodes_to_update.append(added_episode) episodes_to_update.append(added_episode)
else: else:
store_subtitles(added_episode['path'], path_mappings.path_replace(added_episode['path'])) store_subtitles(added_episode['path'], path_mappings.path_replace(added_episode['path']))
@ -163,6 +166,7 @@ def sync_episodes(series_id, send_event=True):
if len(episodes_to_update): if len(episodes_to_update):
for updated_episode in episodes_to_update: for updated_episode in episodes_to_update:
try: try:
updated_episode['updated_at_timestamp'] = datetime.now()
database.execute(update(TableEpisodes) database.execute(update(TableEpisodes)
.values(updated_episode) .values(updated_episode)
.where(TableEpisodes.sonarrEpisodeId == updated_episode['sonarrEpisodeId'])) .where(TableEpisodes.sonarrEpisodeId == updated_episode['sonarrEpisodeId']))
@ -226,6 +230,7 @@ def sync_one_episode(episode_id, defer_search=False):
# Update existing episodes in DB # Update existing episodes in DB
elif episode and existing_episode: elif episode and existing_episode:
try: try:
episode['updated_at_timestamp'] = datetime.now()
database.execute( database.execute(
update(TableEpisodes) update(TableEpisodes)
.values(episode) .values(episode)
@ -241,6 +246,7 @@ def sync_one_episode(episode_id, defer_search=False):
# Insert new episodes in DB # Insert new episodes in DB
elif episode and not existing_episode: elif episode and not existing_episode:
try: try:
episode['created_at_timestamp'] = datetime.now()
database.execute( database.execute(
insert(TableEpisodes) insert(TableEpisodes)
.values(episode)) .values(episode))

@ -3,6 +3,7 @@
import logging import logging
from sqlalchemy.exc import IntegrityError from sqlalchemy.exc import IntegrityError
from datetime import datetime
from app.config import settings from app.config import settings
from subtitles.indexer.series import list_missing_subtitles from subtitles.indexer.series import list_missing_subtitles
@ -127,6 +128,7 @@ def update_series(send_event=True):
.first(): .first():
try: try:
trace(f"Updating {show['title']}") trace(f"Updating {show['title']}")
updated_series['updated_at_timestamp'] = datetime.now()
database.execute( database.execute(
update(TableShows) update(TableShows)
.values(updated_series) .values(updated_series)
@ -145,6 +147,7 @@ def update_series(send_event=True):
try: try:
trace(f"Inserting {show['title']}") trace(f"Inserting {show['title']}")
added_series['created_at_timestamp'] = datetime.now()
database.execute( database.execute(
insert(TableShows) insert(TableShows)
.values(added_series)) .values(added_series))
@ -238,6 +241,7 @@ def update_one_series(series_id, action):
# Update existing series in DB # Update existing series in DB
if action == 'updated' and existing_series: if action == 'updated' and existing_series:
try: try:
series['updated_at_timestamp'] = datetime.now()
database.execute( database.execute(
update(TableShows) update(TableShows)
.values(series) .values(series)
@ -252,6 +256,7 @@ def update_one_series(series_id, action):
# Insert new series in DB # Insert new series in DB
elif action == 'updated' and not existing_series: elif action == 'updated' and not existing_series:
try: try:
series['created_at_timestamp'] = datetime.now()
database.execute( database.execute(
insert(TableShows) insert(TableShows)
.values(series)) .values(series))

@ -0,0 +1,34 @@
"""empty message
Revision ID: 8baf97427327
Revises: 1e38aa77a491
Create Date: 2024-10-18 12:57:13.831596
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '8baf97427327'
down_revision = '1e38aa77a491'
branch_labels = None
depends_on = None
def upgrade():
with op.batch_alter_table('table_episodes', schema=None) as batch_op:
batch_op.add_column(sa.Column('created_at_timestamp', sa.DateTime(), nullable=True))
batch_op.add_column(sa.Column('updated_at_timestamp', sa.DateTime(), nullable=True))
with op.batch_alter_table('table_movies', schema=None) as batch_op:
batch_op.add_column(sa.Column('created_at_timestamp', sa.DateTime(), nullable=True))
batch_op.add_column(sa.Column('updated_at_timestamp', sa.DateTime(), nullable=True))
with op.batch_alter_table('table_shows', schema=None) as batch_op:
batch_op.add_column(sa.Column('created_at_timestamp', sa.DateTime(), nullable=True))
batch_op.add_column(sa.Column('updated_at_timestamp', sa.DateTime(), nullable=True))
def downgrade():
pass
Loading…
Cancel
Save