YaKotikTvoy

db.py

Aug 21st, 2023 (edited)
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 30.39 KB | Software | 0 0
  1. from sqlalchemy import select
  2. from sqlalchemy.pool import NullPool
  3. from sqlmodel import SQLModel
  4. from sqlalchemy.ext.asyncio import create_async_engine
  5. from dal import context
  6. from dal.models import Users,  User_prognoz, Balance_history, Balance_history_refer, \
  7.     User_chat_history, User_scenary, Scenary_compatibility, Scenary_prognoz, Scenary_people, Scenary_dream, User_info,Referer_partners,Referer_partners_links,Activity
  8. import settings
  9. import sqlalchemy as sa
  10. from sqlalchemy.exc import SQLAlchemyError
  11. from datetime import datetime
  12. from sqlalchemy import func
  13. from sqlalchemy import desc
  14.  
  15. database_url = "postgresql+asyncpg://0123010110_data_admin:0123fituro_Admin010110@" + settings.get_db_host() + ":5432/db"
  16.  
  17. context.async_session_factory.configure(
  18.     bind=create_async_engine(database_url, poolclass=NullPool, echo=False)
  19. )
  20.  
  21.  
  22. async def get_user(user_tg_id):
  23.     try:
  24.         async with context.Session() as session:
  25.             q = select(Users).where(Users.user_tg_id == user_tg_id)
  26.             result = await session.execute(q)
  27.             return result.first()
  28.     except:
  29.         pass
  30.  
  31. async def get_user_by_id(user_id):
  32.     try:
  33.         async with context.Session() as session:
  34.             q = select(Users).where(Users.id == user_id)
  35.             result = await session.execute(q)
  36.             return result.first()
  37.     except:
  38.         pass
  39.  
  40. async def get_user_from_name(user_name):
  41.     try:
  42.         async with context.Session() as session:
  43.             q = select(Users).where(Users.user_name == user_name)
  44.             result = await session.execute(q)
  45.             return result.first()
  46.     except:
  47.         pass
  48.  
  49. async def get_all_users():
  50.     try:
  51.         async with context.Session() as session:
  52.             q = select(Users.user_tg_id)
  53.             result = await session.execute(q)
  54.             return result.fetchall()
  55.     except:
  56.         pass
  57.  
  58.  
  59. async def get_anoncement_users(anoncement_id):
  60.     try:
  61.         async with context.Session() as session:
  62.             q = select(Users.user_tg_id)
  63.             result = await session.execute(q)
  64.             return result.fetchall()
  65.     except:
  66.         pass
  67.  
  68. async def get_all_banned_users():
  69.     try:
  70.         async with context.Session() as session:
  71.             q = select(Users.user_tg_id).where(Users.is_banned == True)
  72.             result = await session.execute(q)
  73.             return result.fetchall()
  74.     except:
  75.         pass
  76.  
  77. async def update_user(obj):
  78.     async with context.Session() as session:
  79.         try:
  80.             await session.execute(
  81.                 sa.update(Users).where(
  82.                     Users.id == obj.id
  83.                 ).values(
  84.                     user_tg_id=obj.user_tg_id,
  85.                     chat_id=obj.chat_id,
  86.                     balance=obj.balance,
  87.                     referer_id=obj.referer_id,
  88.                     referer_link=obj.referer_link,
  89.                     partner_referer_link=obj.partner_referer_link,
  90.                     last_update=datetime.now(),
  91.                     scenary_id=obj.scenary_id,
  92.                     is_solvent=obj.is_solvent,
  93.                     is_banned=obj.is_banned,
  94.                     last_step_handler=obj.last_step_handler,
  95.                     subscription_date=obj.subscription_date,
  96.                     last_anoncement_id=obj.last_anoncement_id,
  97.                 )
  98.             )
  99.             await session.commit()
  100.         except sa.exc.IntegrityError:
  101.             await session.rollback()
  102.             raise
  103.  
  104. async def update_user_last_step_handler(obj):
  105.     async with context.Session() as session:
  106.         try:
  107.             await session.execute(
  108.                 sa.update(Users).where(
  109.                     Users.id == obj.id
  110.                 ).values(
  111.                     last_step_handler=obj.last_step_handler,
  112.                 )
  113.             )
  114.             await session.commit()
  115.         except sa.exc.IntegrityError:
  116.             await session.rollback()
  117.             raise
  118.  
  119. async def insert_user(obj):
  120.     async with context.Session() as session:
  121.         try:
  122.             response = await session.execute(
  123.                 sa.insert(Users).values(
  124.                     user_tg_id=obj.user_tg_id,
  125.                     chat_id=obj.chat_id,
  126.                     balance=obj.balance,
  127.                     referer_id=obj.referer_id,
  128.                     registration_date=datetime.now(),
  129.                     referer_link=obj.referer_link,
  130.                     last_update=datetime.now(),
  131.                     scenary_id=obj.scenary_id,
  132.                     is_solvent=obj.is_solvent,
  133.                     is_banned=obj.is_banned,
  134.                     last_step_handler=obj.last_step_handler,
  135.                     last_anoncement_id=obj.last_anoncement_id,
  136.                 )
  137.             )
  138.             await session.commit()
  139.             rows = await session.execute(
  140.                 select(Users).where(
  141.                     Users.id == response.inserted_primary_key[0]
  142.                 )
  143.             )
  144.             return rows.first()
  145.         except sa.exc.IntegrityError:
  146.             await session.rollback()
  147.             raise
  148.  
  149.  
  150. async def get_prognoz(user_id):
  151.     try:
  152.         async with context.Session() as session:
  153.             q = select(User_prognoz).where(User_prognoz.user_id == user_id)
  154.             result = await session.execute(q)
  155.             return result.first()
  156.     except:
  157.         pass
  158.  
  159.  
  160. async def get_users_prognoz_is_ready():
  161.     try:
  162.         async with context.Session() as session:
  163.             q = select(User_prognoz, Users).join(Users, Users.id == User_prognoz.user_id, isouter=True)\
  164.                 .where(User_prognoz.is_active == True)\
  165.                 .where(User_prognoz.is_ready == True)
  166.             result = await session.execute(q)
  167.             return result.fetchall()
  168.     except:
  169.         pass
  170.  
  171. async def get_users_prognoz_is_not_ready():
  172.     try:
  173.         async with context.Session() as session:
  174.             q = select(User_prognoz, Users).join(Users, Users.id == User_prognoz.user_id, isouter=True)\
  175.                 .where(User_prognoz.is_active == True)\
  176.                 .where(User_prognoz.town != None)\
  177.                 .where(User_prognoz.description == None)
  178.             result = await session.execute(q)
  179.             return result.fetchall()
  180.     except:
  181.         pass
  182.  
  183. async def update_prognoz(obj):
  184.     async with context.Session() as session:
  185.         try:
  186.             await session.execute(
  187.                 sa.update(User_prognoz).where(
  188.                     User_prognoz.user_id == obj.user_id
  189.                 ).values(
  190.                     date=obj.date,
  191.                     town=obj.town,
  192.                     lat=obj.lat,
  193.                     lng=obj.lng,
  194.                     tz_info=obj.tz_info,
  195.                     transits=obj.transits,
  196.                     transits_aspects=obj.transits_aspects,
  197.                     is_active=obj.is_active,
  198.                     description=obj.description,
  199.                 )
  200.             )
  201.             await session.commit()
  202.         except sa.exc.IntegrityError:
  203.             await session.rollback()
  204.             raise
  205.  
  206. async def update_prognoz_ready(obj):
  207.     async with context.Session() as session:
  208.         try:
  209.             await session.execute(
  210.                 sa.update(User_prognoz).where(
  211.                     User_prognoz.user_id == obj.user_id
  212.                 ).values(
  213.                     description=obj.description,
  214.                     is_ready=obj.is_ready,
  215.                     date=obj.date,
  216.                 )
  217.             )
  218.             await session.commit()
  219.         except sa.exc.IntegrityError:
  220.             await session.rollback()
  221.             raise
  222.  
  223. async def insert_prognoz(obj):
  224.     async with context.Session() as session:
  225.         try:
  226.             response = await session.execute(
  227.                 sa.insert(User_prognoz).values(
  228.                     user_id=obj.user_id,
  229.                     date=obj.date,
  230.                     town=obj.town,
  231.                     lat=obj.lat,
  232.                     lng=obj.lng,
  233.                     tz_info=obj.tz_info,
  234.                     transits=obj.transits,
  235.                     transits_aspects=obj.transits_aspects,
  236.                     description=obj.description,
  237.                     is_active=obj.is_active,
  238.                 )
  239.             )
  240.             await session.commit()
  241.             rows = await session.execute(
  242.                 select(User_prognoz).where(
  243.                     User_prognoz.id == response.inserted_primary_key[0]
  244.                 )
  245.             )
  246.             return rows.first()
  247.         except sa.exc.IntegrityError:
  248.             await session.rollback()
  249.             raise
  250.  
  251.  
  252. async def insert_transaction(obj):
  253.     async with context.Session() as session:
  254.         try:
  255.             response = await session.execute(
  256.                 sa.insert(Balance_history).values(
  257.                     user_id=obj.user_id,
  258.                     count=obj.count,
  259.                     is_up_operation=obj.is_up_operation,
  260.                     create_date=obj.create_date,
  261.                     confirm_date=obj.confirm_date,
  262.                     decline_date=obj.decline_date,
  263.                     pay_type=obj.pay_type,
  264.                     price=obj.price,
  265.                     transaction_id=obj.transaction_id,
  266.                 )
  267.             )
  268.             await session.commit()
  269.             rows = await session.execute(
  270.                 select(Balance_history).where(
  271.                     Balance_history.id == response.inserted_primary_key[0]
  272.                 )
  273.             )
  274.             return rows.first()
  275.         except sa.exc.IntegrityError:
  276.             await session.rollback()
  277.             raise
  278.  
  279.  
  280. async def insert_chat_history(obj):
  281.     async with context.Session() as session:
  282.         try:
  283.             response = await session.execute(
  284.                 sa.insert(User_chat_history).values(
  285.                     user_id=obj.user_id,
  286.                     date=obj.date,
  287.                     user_question=obj.user_question,
  288.                     bot_answer=obj.bot_answer,
  289.                     type=obj.type,
  290.                     is_closed=obj.is_closed,
  291.                     scenary_id=obj.scenary_id,
  292.                 )
  293.             )
  294.             await session.commit()
  295.             rows = await session.execute(
  296.                 select(User_chat_history).where(
  297.                     User_chat_history.id == response.inserted_primary_key[0]
  298.                 )
  299.             )
  300.             return rows.first()
  301.         except sa.exc.IntegrityError:
  302.             await session.rollback()
  303.             raise
  304.  
  305.  
  306. async def get_user_chat_history(obj):
  307.     async with context.Session() as session:
  308.         try:
  309.             rows = await session.execute(
  310.                 select(User_chat_history).where(
  311.                     User_chat_history.user_id == obj.id
  312.                 ).where(User_chat_history.is_closed == False
  313.                         ).order_by(User_chat_history.date)
  314.             )
  315.             return rows.fetchall()
  316.         except sa.exc.IntegrityError:
  317.             await session.rollback()
  318.             raise
  319.  
  320.  
  321. async def close_chat_history(obj):
  322.     async with context.Session() as session:
  323.         try:
  324.             await session.execute(
  325.                 sa.update(User_chat_history).where(
  326.                     User_chat_history.user_id == obj.id
  327.                 ).where(User_chat_history.is_closed == False
  328.                         ).values(
  329.                     is_closed=True,
  330.                 )
  331.             )
  332.             await session.commit()
  333.         except sa.exc.IntegrityError:
  334.             await session.rollback()
  335.             raise
  336.  
  337.  
  338. async def insert_referer_payment(obj):
  339.     async with context.Session() as session:
  340.         try:
  341.             response = await session.execute(
  342.                 sa.insert(Balance_history_refer).values(
  343.                     user_refer_id=obj.user_refer_id,
  344.                     follower_id=obj.follower_id,
  345.                     summ=obj.summ,
  346.                     date=obj.date,
  347.                 )
  348.             )
  349.             await session.commit()
  350.             rows = await session.execute(
  351.                 select(Balance_history_refer).where(
  352.                     Balance_history_refer.id == response.inserted_primary_key[0]
  353.                 )
  354.             )
  355.             return rows.first()
  356.         except sa.exc.IntegrityError:
  357.             await session.rollback()
  358.             raise
  359.  
  360. async def update_referer_payment(obj):
  361.     async with context.Session() as session:
  362.         try:
  363.             await session.execute(
  364.                 sa.update(Balance_history_refer).where(
  365.                     Balance_history_refer.id == obj.id
  366.                 ).values(
  367.                     received=obj.received,
  368.                 )
  369.             )
  370.             await session.commit()
  371.         except sa.exc.IntegrityError:
  372.             await session.rollback()
  373.             raise
  374.  
  375. async def insert_scenary(obj):
  376.     async with context.Session() as session:
  377.         try:
  378.             response = await session.execute(
  379.                 sa.insert(User_scenary).values(
  380.                     user_id=obj.user_id,
  381.                     type=obj.type,
  382.                     date=obj.date,
  383.                 )
  384.             )
  385.             await session.commit()
  386.             return response.inserted_primary_key[0]
  387.         except sa.exc.IntegrityError:
  388.             await session.rollback()
  389.             raise
  390.  
  391.  
  392. async def get_scenary(user):
  393.     async with context.Session() as session:
  394.         try:
  395.             rows = await session.execute(
  396.                 select(User_scenary).where(
  397.                     User_scenary.id == user.scenary_id
  398.                 ).where(User_scenary.is_closed == False or User_scenary.is_closed == None
  399.                         )
  400.             )
  401.             return rows.first()
  402.         except sa.exc.IntegrityError:
  403.             await session.rollback()
  404.             raise
  405.  
  406.  
  407. async def update_scenary(obj):
  408.     async with context.Session() as session:
  409.         try:
  410.             await session.execute(
  411.                 sa.update(User_scenary).where(
  412.                     User_scenary.id == obj.id
  413.                 ).values(
  414.                     is_closed=obj.is_closed,
  415.                     spent_kosmik=obj.spent_kosmik,
  416.                     received_description=obj.received_description,
  417.                 )
  418.             )
  419.             await session.commit()
  420.         except sa.exc.IntegrityError:
  421.             await session.rollback()
  422.             raise
  423.  
  424.  
  425. async def get_scenary_prognoz(scenary_id):
  426.     try:
  427.         async with context.Session() as session:
  428.             q = select(Scenary_prognoz).where(Scenary_prognoz.scenary_id == scenary_id)
  429.             result = await session.execute(q)
  430.             return result.first()
  431.     except:
  432.         pass
  433.  
  434. async def get_user_scenary_prognoz_towns(user_id):
  435.     try:
  436.         async with context.Session() as session:
  437.             q = select(func.max(Scenary_prognoz.scenary_id),Scenary_prognoz.town)\
  438.                 .where(Scenary_prognoz.user_id == user_id)\
  439.                 .where(Scenary_prognoz.town != None)\
  440.                 .group_by(Scenary_prognoz.town)
  441.             result = await session.execute(q)
  442.             return result.fetchall()
  443.     except:
  444.         pass
  445.  
  446. async def update_scenary_prognoz(obj):
  447.     async with context.Session() as session:
  448.         try:
  449.             await session.execute(
  450.                 sa.update(Scenary_prognoz).where(
  451.                     Scenary_prognoz.scenary_id == obj.scenary_id
  452.                 ).values(
  453.                     date=obj.date,
  454.                     type=obj.type,
  455.                     town=obj.town,
  456.                     lat=obj.lat,
  457.                     lng=obj.lng,
  458.                     tz_info=obj.tz_info,
  459.                     transits=obj.transits,
  460.                     transits_aspects=obj.transits_aspects,
  461.                 )
  462.             )
  463.             await session.commit()
  464.         except sa.exc.IntegrityError:
  465.             await session.rollback()
  466.             raise
  467.  
  468.  
  469. async def insert_scenary_prognoz(obj):
  470.     async with context.Session() as session:
  471.         try:
  472.             response = await session.execute(
  473.                 sa.insert(Scenary_prognoz).values(
  474.                     user_id=obj.user_id,
  475.                     date=obj.date,
  476.                     type=obj.type,
  477.                     town=obj.town,
  478.                     lat=obj.lat,
  479.                     lng=obj.lng,
  480.                     tz_info=obj.tz_info,
  481.                     transits=obj.transits,
  482.                     transits_aspects=obj.transits_aspects,
  483.                     scenary_id=obj.scenary_id,
  484.                 )
  485.             )
  486.             await session.commit()
  487.             rows = await session.execute(
  488.                 select(Scenary_prognoz).where(
  489.                     Scenary_prognoz.id == response.inserted_primary_key[0]
  490.                 )
  491.             )
  492.             return rows.first()
  493.         except sa.exc.IntegrityError:
  494.             await session.rollback()
  495.             raise
  496.  
  497.  
  498. async def get_scenary_people(scenary_id):
  499.     try:
  500.         async with context.Session() as session:
  501.             q = select(Scenary_people).where(Scenary_people.scenary_id == scenary_id)
  502.             result = await session.execute(q)
  503.             return result.first()
  504.     except:
  505.         pass
  506.  
  507.  
  508. async def update_scenary_people(obj):
  509.     async with context.Session() as session:
  510.         try:
  511.             await session.execute(
  512.                 sa.update(Scenary_people).where(
  513.                     Scenary_people.scenary_id == obj.scenary_id
  514.                 ).values(
  515.                     people_birthday=obj.people_birthday,
  516.                     town=obj.town,
  517.                     tz_info=obj.tz_info,
  518.                     lat=obj.lat,
  519.                     lng=obj.lng,
  520.                     name=obj.name,
  521.                     gender=obj.gender,
  522.                     horoscope=obj.horoscope,
  523.                     aspects=obj.aspects,
  524.                 )
  525.             )
  526.             await session.commit()
  527.         except sa.exc.IntegrityError:
  528.             await session.rollback()
  529.             raise
  530.         except:
  531.             await session.rollback()
  532.             raise
  533.  
  534.  
  535. async def insert_scenary_people(obj):
  536.     async with context.Session() as session:
  537.         try:
  538.             response = await session.execute(
  539.                 sa.insert(Scenary_people).values(
  540.                     user_id=obj.user_id,
  541.                     scenary_id=obj.scenary_id,
  542.                     people_birthday=obj.people_birthday,
  543.                     town=obj.town,
  544.                     tz_info=obj.tz_info,
  545.                     lat=obj.lat,
  546.                     lng=obj.lng,
  547.                     name=obj.name,
  548.                     gender=obj.gender,
  549.                     horoscope=obj.horoscope,
  550.                     aspects=obj.aspects,
  551.                 )
  552.             )
  553.             await session.commit()
  554.             rows = await session.execute(
  555.                 select(Scenary_people).where(
  556.                     Scenary_people.id == response.inserted_primary_key[0]
  557.                 )
  558.             )
  559.             return rows.first()
  560.         except sa.exc.IntegrityError:
  561.             await session.rollback()
  562.             raise
  563.  
  564.  
  565. async def get_scenary_compatibility(scenary_id):
  566.     try:
  567.         async with context.Session() as session:
  568.             q = select(Scenary_compatibility).where(Scenary_compatibility.scenary_id == scenary_id)
  569.             result = await session.execute(q)
  570.             return result.first()
  571.     except:
  572.         pass
  573.  
  574.  
  575. async def update_scenary_compatibility(obj):
  576.     async with context.Session() as session:
  577.         try:
  578.             await session.execute(
  579.                 sa.update(Scenary_compatibility).where(
  580.                     Scenary_compatibility.scenary_id == obj.scenary_id
  581.                 ).values(
  582.                     partner_birthday=obj.partner_birthday,
  583.                     town=obj.town,
  584.                     tz_info=obj.tz_info,
  585.                     lat=obj.lat,
  586.                     lng=obj.lng,
  587.                     name=obj.name,
  588.                     gender=obj.gender,
  589.                     couple_natal=obj.couple_natal,
  590.                     couple_aspects=obj.couple_aspects,
  591.                 )
  592.             )
  593.             await session.commit()
  594.         except sa.exc.IntegrityError:
  595.             await session.rollback()
  596.             raise
  597.         except:
  598.             await session.rollback()
  599.             raise
  600.  
  601.  
  602. async def insert_scenary_compatibility(obj):
  603.     async with context.Session() as session:
  604.         try:
  605.             response = await session.execute(
  606.                 sa.insert(Scenary_compatibility).values(
  607.                     user_id=obj.user_id,
  608.                     partner_birthday=obj.partner_birthday,
  609.                     town=obj.town,
  610.                     tz_info=obj.tz_info,
  611.                     lat=obj.lat,
  612.                     lng=obj.lng,
  613.                     name=obj.name,
  614.                     gender=obj.gender,
  615.                     couple_natal=obj.couple_natal,
  616.                     couple_aspects=obj.couple_aspects,
  617.                     scenary_id=obj.scenary_id,
  618.                 )
  619.             )
  620.             await session.commit()
  621.             rows = await session.execute(
  622.                 select(Scenary_compatibility).where(
  623.                     Scenary_compatibility.id == response.inserted_primary_key[0]
  624.                 )
  625.             )
  626.             return rows.first()
  627.         except sa.exc.IntegrityError:
  628.             await session.rollback()
  629.             raise
  630.  
  631.  
  632. async def get_scenary_dream(scenary_id):
  633.     try:
  634.         async with context.Session() as session:
  635.             q = select(Scenary_dream).where(Scenary_dream.scenary_id == scenary_id)
  636.             result = await session.execute(q)
  637.             return result.first()
  638.     except:
  639.         pass
  640.  
  641.  
  642. async def update_scenary_dream(obj):
  643.     async with context.Session() as session:
  644.         try:
  645.             await session.execute(
  646.                 sa.update(Scenary_dream).where(
  647.                     Scenary_dream.scenary_id == obj.scenary_id
  648.                 ).values(
  649.                     description=obj.description,
  650.                 )
  651.             )
  652.             await session.commit()
  653.         except sa.exc.IntegrityError:
  654.             await session.rollback()
  655.             raise
  656.         except:
  657.             await session.rollback()
  658.             raise
  659.  
  660.  
  661. async def insert_scenary_dream(obj):
  662.     async with context.Session() as session:
  663.         try:
  664.             response = await session.execute(
  665.                 sa.insert(Scenary_dream).values(
  666.                     user_id=obj.user_id,
  667.                     scenary_id=obj.scenary_id,
  668.                 )
  669.             )
  670.             await session.commit()
  671.             rows = await session.execute(
  672.                 select(Scenary_dream).where(
  673.                     Scenary_dream.id == response.inserted_primary_key[0]
  674.                 )
  675.             )
  676.             return rows.first()
  677.         except sa.exc.IntegrityError:
  678.             await session.rollback()
  679.             raise
  680.  
  681.  
  682. async def get_user_info(user_id):
  683.     try:
  684.         async with context.Session() as session:
  685.             q = select(User_info).where(User_info.user_id == user_id)
  686.             result = await session.execute(q)
  687.             return result.first()
  688.     except:
  689.         pass
  690.  
  691.  
  692. async def update_user_info(obj):
  693.     async with context.Session() as session:
  694.         try:
  695.             await session.execute(
  696.                 sa.update(User_info).where(
  697.                     User_info.user_id == obj.user_id
  698.                 ).values(
  699.                     birthday=obj.birthday,
  700.                     town=obj.town,
  701.                     name=obj.name,
  702.                     tz_info=obj.tz_info,
  703.                     lat=obj.lat,
  704.                     lng=obj.lng,
  705.                     gender=obj.gender,
  706.                     user_name=obj.user_name,
  707.                     language_code=obj.language_code,
  708.                     horoscope=obj.horoscope,
  709.                     aspects=obj.aspects,
  710.                     description=obj.description,
  711.                     review=obj.review,
  712.                     review_date=obj.review_date,
  713.                     is_updated=obj.is_updated,
  714.                 )
  715.             )
  716.             await session.commit()
  717.         except sa.exc.IntegrityError:
  718.             await session.rollback()
  719.             raise
  720.         except:
  721.             await session.rollback()
  722.             raise
  723.  
  724.  
  725. async def insert_user_info(obj):
  726.     async with context.Session() as session:
  727.         try:
  728.             response = await session.execute(
  729.                 sa.insert(User_info).values(
  730.                     user_id=obj.user_id,
  731.                     birthday=obj.birthday,
  732.                     town=obj.town,
  733.                     name=obj.name,
  734.                     tz_info=obj.tz_info,
  735.                     lat=obj.lat,
  736.                     lng=obj.lng,
  737.                     gender=obj.gender,
  738.                     user_name=obj.user_name,
  739.                     language_code=obj.language_code,
  740.                     horoscope=obj.horoscope,
  741.                     aspects=obj.aspects,
  742.                     description=obj.description,
  743.                     review=obj.review,
  744.                     review_date=obj.review_date,
  745.                     is_updated=obj.review_date,
  746.                 )
  747.             )
  748.             await session.commit()
  749.             rows = await session.execute(
  750.                 select(User_info).where(
  751.                     User_info.id == response.inserted_primary_key[0]
  752.                 )
  753.             )
  754.             return rows.first()
  755.         except sa.exc.IntegrityError:
  756.             await session.rollback()
  757.             raise
  758.  
  759.  
  760. async def get_referer_partners(user_tg_id):
  761.     try:
  762.         async with context.Session() as session:
  763.             q = select(Referer_partners).where(Referer_partners.user_tg_id == user_tg_id)
  764.             result = await session.execute(q)
  765.             return result.first()
  766.     except:
  767.         pass
  768.  
  769.  
  770. async def update_referer_partners(obj):
  771.     async with context.Session() as session:
  772.         try:
  773.             await session.execute(
  774.                 sa.update(Referer_partners).where(
  775.                     Referer_partners.user_tg_id == obj.user_tg_id
  776.                 ).values(
  777.                     user_tg_id=obj.user_tg_id,
  778.                 )
  779.             )
  780.             await session.commit()
  781.         except sa.exc.IntegrityError:
  782.             await session.rollback()
  783.             raise
  784.         except:
  785.             await session.rollback()
  786.             raise
  787.  
  788.  
  789. async def insert_referer_partners(obj):
  790.     async with context.Session() as session:
  791.         try:
  792.             response = await session.execute(
  793.                 sa.insert(Referer_partners).values(
  794.                     user_tg_id=obj.user_tg_id,
  795.                 )
  796.             )
  797.             await session.commit()
  798.             rows = await session.execute(
  799.                 select(Referer_partners).where(
  800.                     Referer_partners.id == response.inserted_primary_key[0]
  801.                 )
  802.             )
  803.             return rows.first()
  804.         except sa.exc.IntegrityError:
  805.             await session.rollback()
  806.             raise
  807.  
  808. async def get_referer_partners_links(user_id):
  809.     try:
  810.         async with context.Session() as session:
  811.             q = select(Referer_partners_links).where(Referer_partners_links.user_id == user_id)
  812.             result = await session.execute(q)
  813.             return result.first()
  814.     except:
  815.         pass
  816.  
  817.  
  818. async def update_referer_partners_links(obj):
  819.     async with context.Session() as session:
  820.         try:
  821.             await session.execute(
  822.                 sa.update(Referer_partners_links).where(
  823.                     Referer_partners_links.user_id == obj.user_id
  824.                 ).values(
  825.                     user_id=obj.user_id,
  826.                     referer_partner_link=obj.referer_partner_link,
  827.                 )
  828.             )
  829.             await session.commit()
  830.         except sa.exc.IntegrityError:
  831.             await session.rollback()
  832.             raise
  833.         except:
  834.  
  835.             await session.rollback()
  836.             raise
  837.  
  838.  
  839. async def insert_referer_partners_links(obj):
  840.     async with context.Session() as session:
  841.         try:
  842.             response = await session.execute(
  843.                 sa.insert(Referer_partners_links).values(
  844.                     user_id=obj.user_id,
  845.                     referer_partner_link=obj.referer_partner_link,
  846.                 )
  847.             )
  848.             await session.commit()
  849.             rows = await session.execute(
  850.                 select(Referer_partners_links).where(
  851.                     Referer_partners_links.id == response.inserted_primary_key[0]
  852.                 )
  853.             )
  854.             return rows.first()
  855.         except sa.exc.IntegrityError:
  856.             await session.rollback()
  857.             raise
  858.  
  859. async def get_activity():
  860.     async with context.Session() as session:
  861.         try:
  862.             rows = await session.execute(
  863.                 select(Activity).where(Activity.is_ready == True)
  864.                     .where(Activity.is_active == True)
  865.                     .where(Activity.is_closed == False)
  866.             )
  867.             return rows.first()
  868.         except sa.exc.IntegrityError:
  869.             await session.rollback()
  870.             raise
  871.  
  872.  
  873. async def update_activity(obj):
  874.     async with context.Session() as session:
  875.         try:
  876.             await session.execute(
  877.                 sa.update(Activity).where(
  878.                     Activity.id == obj.id
  879.                 ).values(
  880.                     name=obj.name,
  881.                     text=obj.text,
  882.                     date=obj.date,
  883.                     bonus_count=obj.bonus_count,
  884.                     is_ready=obj.is_ready,
  885.                     is_active=obj.is_active,
  886.                     type=obj.type,
  887.                     is_closed=obj.is_closed,
  888.                     user_id=obj.user_id,
  889.                     user_name=obj.user_name,
  890.                 )
  891.             )
  892.             await session.commit()
  893.         except sa.exc.IntegrityError:
  894.             await session.rollback()
  895.             raise
  896.         except:
  897.  
  898.             await session.rollback()
  899.             raise
  900.  
  901. async def get_partner_id(link):
  902.     async with context.Session() as session:
  903.         try:
  904.             rows = await session.execute(
  905.                 select(Referer_partners_links.user_id).where(Referer_partners_links.referer_partner_link == link)
  906.             )
  907.             return rows.first()
  908.         except sa.exc.IntegrityError:
  909.             await session.rollback()
  910.             raise
  911.  
  912.  
Advertisement
Add Comment
Please, Sign In to add comment