def getBeforePoint(userId, endDate=None):
today = datetime.now().date()
subquery = (
db.session.query(
T_user_point.user_promotion_code_id,
T_user_point.acquired_at,
M_promotion_code.valid_days,
T_user_promotion_code.promotion_code_id
)
.join(T_user_promotion_code, T_user_point.user_promotion_code_id == T_user_promotion_code.user_promotion_code_id)
.join(M_promotion_code, T_user_promotion_code.promotion_code_id == M_promotion_code.promotion_code_id)
.subquery()
)
subquery2 = (
db.session.query(
T_user_point.user_promotion_code_id,
T_user_point.acquired_at,
M_promotion_code.valid_days,
T_user_promotion_code.promotion_code_id
)
.join(T_user_promotion_code, T_user_point.user_promotion_code_id == T_user_promotion_code.user_promotion_code_id)
.join(M_promotion_code, T_user_promotion_code.promotion_code_id == M_promotion_code.promotion_code_id)
.first()
)
# Get valid_days as an integer
valid_days = db.session.query(subquery.c.valid_days).filter(
subquery.c.user_promotion_code_id == T_user_point.user_promotion_code_id,
subquery.c.user_promotion_code_id == T_user_promotion_code.user_promotion_code_id,
subquery.c.promotion_code_id == M_promotion_code.promotion_code_id
).as_scalar()
point = (
db.session.query(func.sum(T_user_point.point))
.join(subquery, T_user_point.user_promotion_code_id == subquery.c.user_promotion_code_id)
.filter(
*(
[
T_user_point.user_id == userId,
T_user_point.is_deleted == False,
# Get points whose acquisition date + expiration date is less than today.
subquery.c.acquired_at + cast(valid_days, Integer) >= today
] if valid_days is not None else [
T_user_point.user_id == userId,
T_user_point.acquired_at <= endDate,
T_user_point.is_deleted == False
]
)
)
.scalar()
)
if point is None:
return 0
return point
of the above code
subquery.c.acquired_at + cast(valid_days, Integer) >= today
this part is not working but I can’t see the error.
I’m having trouble getting points.
subquery.c.acquired_at + cast(valid_days, Integer) >= today
How can I check this code works or not?
I tried
print(subquery.c.acquired_at + cast(valid_days, Integer))
and get
anon_1.acquired_at + CAST((SELECT anon_1.valid_days
I don’t know what means