
    _ik                     ^    S SK J r   S SKJrJr  S SKJr  S SKJr  S\S\4S jr	 " S S	5      r
g
)    )datetime)OptionalAny)Session)SubjectModelrreturnc                 V   U R                   U R                  U R                  U R                  (       a  U R                  R	                  5       OS U R
                  (       a  U R
                  R	                  5       OS U R                  (       a  U R                  R	                  5       S.$ S S.$ )N)id	school_idsubject
added_dateupdated_datedeleted_date)r   r   r   r   	isoformatr   r   )r   s    SC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\subject_class.py_row_to_dictr      sx    dd[[9923,,all,,.D67nn002$67nn002  KO     c                       \ rS rSrS\4S jrSS\\   S\4S jjr	S\S\4S	 jr
S
\S\4S jrS\S
\S\4S jrS\S\4S jrSrg)SubjectClass   dbc                     Xl         g Nr   )selfr   s     r   __init__SubjectClass.__init__   s    r   Nr   r	   c                     U R                   R                  [        5      R                  [        R                  R                  S5      5      nUb(  US:w  a"  UR                  [        R                  U:H  5      nUR                  5       nSU Vs/ s H  n[        U5      PM     snS.$ s  snf ! [         a  nS[        U5      / S.s SnA$ SnAff = f)zgLista registros activos (deleted_date is None). Filtro opcional por school_id (-1 o None = no filtrar).Nsuccessstatusdataerrorr#   messager$   )r   queryr   filterr   is_r   allr   	Exceptionstr)r   r   qrowsr   es         r   getSubjectClass.get   s    
	Fl+1155d;<  $bHH\33y@A557D'41P4a,q/41PQQ1P 	F%#a&"EE	Fs0   BB, B'"B, 'B, ,
C6C
C
Cr   c                      U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSSS.$ S[        U5      S.$ ! [         a  nS[        U5      SS.s SnA$ SnAff = f)zObtiene un registro por id.r%   Registro no encontrado.Nr&   r!   r"   )	r   r(   r   r)   r   firstr   r,   r-   r   r   rowr0   s       r   	get_by_idSubjectClass.get_by_id$   s|    	H''---44\__5JKQQSC")6OY]^^'c1BCC 	H%#a&$GG	Hs$   AA* A* *
B4BBBr$   c                     [         R                  " 5       n[        UR                  S5      UR                  S5      UUSS9nU R                  R                  U5        U R                  R                  5         U R                  R                  U5        SSUR                  [        U5      S.$ ! [         a2  nU R                  R                  5         S[        U5      S	.s SnA$ SnAff = f)
zCrea un registro en subjects.r   r   N)r   r   r   r   r   r!   zRegistro creado.)r#   r'   r   r$   r%   r#   r'   )r   nowr   r1   r   addcommitrefreshr   r   r,   rollbackr-   )r   r$   r<   r7   r0   s        r   storeSubjectClass.store.   s    	:,,.C((;/+ !C GGKKGGNNGGOOC '4Fcff^jkn^opp 	:GG%#a&99	:s   B)B, ,
C(6'C#C(#C(c                 2    U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ SU;   a
  US   Ul        SU;   a
  US   Ul        [        R                  " 5       Ul
        U R                   R                  5         U R                   R                  U5        SSUR                  S.$ ! [         a2  nU R                   R                  5         S[        U5      S.s S	nA$ S	nAff = f)
z7Actualiza un registro por id; solo los campos enviados.r%   r4   r;   r   r   r!   zRegistro actualizado.)r#   r'   r   N)r   r(   r   r)   r   r5   r   r   r   r<   r   r>   r?   r,   r@   r-   )r   r   r$   r7   r0   s        r   updateSubjectClass.updateA   s    	:''---44\__5JKQQSC")6OPPd" $[ 1D "9o'||~CGGNNGGOOC '4KSVSYSYZZ 	:GG%#a&99	:s%   AC A>C 
D$'DDDc                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ [        R                  " 5       Ul        [        R                  " 5       Ul	        U R                   R                  5         SSS.$ ! [         a2  nU R                   R                  5         S[        U5      S.s SnA$ SnAff = f)u$   Borrado lógico: setea deleted_date.r%   r4   r;   r!   zRegistro eliminado.N)r   r(   r   r)   r   r5   r   r<   r   r   r>   r,   r@   r-   r6   s       r   deleteSubjectClass.deleteS   s    
	:''---44\__5JKQQSC")6OPP'||~C'||~CGGNN'4IJJ 	:GG%#a&99	:s%   AB. AB. .
C*8'C%C*%C*r   r   )__name__
__module____qualname____firstlineno__r   r   r   intr   r1   r8   dictrA   rD   rG   __static_attributes__ r   r   r   r      s~    7 FXc] Fc FHC HC H:$ :3 :&: :D :S :$: : :r   r   N)r   typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   rN   r   r   rP   r   r   <module>rT      s0       " .L T M: M:r   