19 """Group data by releases and tracks and build de catalogue
22 date (datetime): is the current date (when last files were processed)
23 client_id (str): client_id to identify sales
26 date = date.replace(hour=0, minute=0, second=0, microsecond=0)
28 {
'$match': {
"accounting_date": date,
"client_id": client_id}},
32 'client_id':{
'$first':
'$client_id'},
33 "release_title": {
'$first':
"$release_title"},
34 "tracks": {
"$addToSet": {
35 "isrc_id":
"$isrc_id",
37 "track_title":
"$track_title",
38 "label_id":
"$label_id",
39 "artists":
"$artists"},
54 files = collection.aggregate(pipeline)
56 existing_doc = cat_collection.find_one({
"release_id": doc[
"release_id"]})
58 new_values = doc[
"tracks"]
59 [cat_collection.update_one({
"release_id":doc[
"release_id"],
"client_id": doc[
"client_id"]}, {
"$addToSet": {
"tracks": i}})
for i
in new_values]
60 cat_collection.update_one({
"release_id":doc[
"release_id"],
"client_id": doc[
"client_id"]}, {
"$set": {
"updated_at": date}})
62 doc[
"updated_at"] = date
63 cat_collection.insert_one(doc)
65 print(f
"Catalogue generated")