
    Bi,$                     P   d dl mZmZmZmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlZ G d dej	                  Z G d d	ej	                  Z G d
 dej	                  Z G d dej	                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  ZdS )     )
ColumnIntegerStringDateTimeBooleanFloatText
ForeignKeyEnumDate)relationship)func)dbNc                   "    e Zd ZdZdZdZdZdZdS )SubscriptionStatusactiveexpired	cancelledtrialpendingN)__name__
__module____qualname__ACTIVEEXPIRED	CANCELLEDTRIALPENDING     P/var/www/html/web/mlink/mlink_AI_Server/mlink-backend/src/models/subscription.pyr   r      s'        FGIEGGGr    r   c                   "    e Zd ZdZdZdZdZdZdS )PaymentStatusr   	completedfailedr   refundedN)r   r   r   r   	COMPLETEDFAILEDr   REFUNDEDr   r    r!   r#   r#      s'        GIFIHHHr    r#   c                   &    e Zd ZdZdZdZdZdZdZdS )PaymentMethodcard	kakao_pay	naver_pay	hecto_payportonetoss_paymentsN)	r   r   r   CARD	KAKAO_PAY	NAVER_PAY	HECTO_PAYPORTONETOSS_PAYMENTSr   r    r!   r+   r+      s,        DIIIG#MMMr    r+   c                       e Zd ZdZdZdZdS )OAuthProviderkakaonavergoogleN)r   r   r   KAKAONAVERGOOGLEr   r    r!   r9   r9      s        EEFFFr    r9   c                      e Zd ZdZ eed          Z e ed          d          Z e ed                    Z	 e ed                    Z
 e ed                    Z ee          Z e ed                    Z e ed                    Z ee ej                    	          Z ee ej                     ej                    
          Z edddd          Z edd          ZdS )UserProfileuser_profilesTprimary_key   Fnullable   d   defaultrK   onupdateUserprofilez!UserProfile.user_id==User.user_idzUserProfile.user_idback_populatesprimaryjoinforeign_keysOAuthAccountuser_profilerQ   N)r   r   r   __tablename__r   r   idr   user_idcompany_namebusiness_numberphoner	   address
departmentpositionr   r   now
created_at
updated_atr   useroauth_accountsr   r    r!   rA   rA   #   s>       #M	T	*	*	*BfVVBZZ%000G6&&++&&LfVVBZZ((OF66"::EfTllGs$$JvffSkk""H($(**555J($(**xtxzzJJJJ <y7*  D
 "\.PPPNNNr    rA   c                      e Zd ZdZ eed          Z ee ed          d          Z e e	e
          d          Z e ed          d          Z ee          Z ee          Z ee          Z ee ej                              Z ee ej                     ej                    	          Z ed
d          ZdS )rT   rd   TrC   zuser_profiles.idFrF   rI   rJ   rL   rA   rV   N)r   r   r   rW   r   r   rX   r
   user_profile_idr   r9   providerr   provider_user_idr	   access_tokenrefresh_tokenr   
expires_atr   r`   ra   rb   r   rU   r   r    r!   rT   rT   :   s       $M	T	*	*	*BfWjj1C&D&DuUUUOvdd=))E:::HvffSkkE:::6$<<LF4LLM!!J($(**555J($(**xtxzzJJJJ  <>NOOOLLLr    rT   c                      e Zd ZdZ eed          Z e ed          d          Z ee	          Z
 eed          Z e ed          d	          Z e ed
          d          Z eed	          Z ee	          Z eed	          Z ee ej                    	          Z ee ej                     ej                              Z edd          ZdS )ProductproductsTrC   rH   FrF      KRWrJ   rE      rL   SubscriptionproductrV   N)r   r   r   rW   r   r   rX   r   namer	   descriptionpricecurrencybilling_cycle
trial_daysfeaturesr   	is_activer   r   r`   ra   rb   r   subscriptionsr   r    r!   rm   rm   K   s)       M	T	*	*	*B6&&++...D&,,KF7U+++EvffQii///HF66"::666M,,,Jvd||Hw---I($(**555J($(**xtxzzJJJJ !L	JJJMMMr    rm   c                      e Zd ZdZ eed          Z e ed          d          Z ee e	d                    Z
 eed          Z e ed          d	
          Z e ee          d          Z e ee          ej        
          Z e ed                    Z e ed                    Z e ed                    Z ee          Z e ed                    Z e ed                    Z e ed                    Z ee          Z ee ej                    
          Z  ee ej                     ej                              Z! e"dddd          Z# e"dd          Z$dS )PaymentpaymentsTrC   rE   FrF   subscriptions.idro   rp   rJ   rI   
      rL   rN   zPayment.user_id==User.user_idzPayment.user_idrP   rr   rV   N)%r   r   r   rW   r   r   rX   r   rY   r
   subscription_idr   amountrw   r   r+   payment_methodr#   r   statuspg_transaction_idpg_merchant_idpg_response_coder	   pg_response_message
card_last4
card_brandbilling_keypayment_metadatar   r   r`   ra   rb   r   rc   subscriptionr   r    r!   r~   r~   ^   s       M	T	*	*	*BfVVBZZ%000GfWjj1C&D&DEEOVEE***FvffQii///HVDD//%@@@NVDD''1FGGGF vvc{{++VFF3KK((NvffRjj)) &,, q		""Jr

##J&%%K vd||($(**555J($(**xtxzzJJJJ <z3&  D
  <zJJJLLLr    r~   c                   J   e Zd ZdZ eed          Z e ed          d          Z ee e	d          d          Z
 e ee          ej                  Z eed          Z eed          Z ee          Z eed          Z ee          Z ee          Z ee          Z e ee          d          Z e ed	                    Z ee          Z e ed                    Z eedd
          Z eed          Z  eed          Z! ee          Z" ee e#j$                              Z% ee e#j$                     e#j$                              Z& e'dddd          Z( e'dd          Z) e'dd          Z* e'dd          Z+dS )rr   r|   TrC   rE   FrF   zproducts.idrJ   rI   r   )rG   rK   rL   rN   z"Subscription.user_id==User.user_idzSubscription.user_idrP   rm   rV   r~   r   PaymentHistoryN),r   r   r   rW   r   r   rX   r   rY   r
   
product_idr   r   r   r   r   
start_dateend_datetrial_end_dater   
auto_renewnext_billing_datecancelled_atr	   cancel_reasonr+   r   
payment_idr   rx   prepaid_cycles_remainingr   next_credit_datelast_credit_datesubscription_metadatar   r`   ra   rb   r   rc   rs   r   payment_historiesr   r    r!   rr   rr      sX       #M	T	*	*	*BfVVBZZ%000GM!:!:UKKKJVDD+,,6H6PQQQF 5111Jvh///HVH%%N ...Jx(( 6(##LF4LLM VDD//$???Ns$$JVG__FF66"::&&M%vgqIII vdT222vdT222 #F4LL($(**555J($(**xtxzzJJJJ <8+  D
 l9_EEEG|InEEEH$%5nUUUr    rr   c                      e Zd ZdZ eed          Z e ed          d          Z ee	          Z
 e ed                    Z ee	          Z ee          Z ee          Z eed          Z eed          Z ee ej                              Z ee ej                     ej                    	          Zd
S )ContentcontentsTrC   rH   FrF   2   rJ   rL   N)r   r   r   rW   r   r   rX   r   titler	   ru   content_typecontent_url	file_sizedurationr   
is_premiumr{   r   r   r`   ra   rb   r   r    r!   r   r      s        M	T	*	*	*BF66#;;///E&,,K6&&**%%L&,,KwIvgH///Jw---I($(**555J($(**xtxzzJJJJJJr    r   c                      e Zd ZdZ eed          Z e ed          d          Z ee e	d          d          Z
 ee ej                              Z ee          Z eed          Z ed	d
dd          Z ed          ZdS )UserContentAccessuser_content_accessTrC   rE   FrF   zcontents.idrJ   rN   content_accessz'UserContentAccess.user_id==User.user_idzUserContentAccess.user_idrP   r   N)r   r   r   rW   r   r   rX   r   rY   r
   
content_idr   r   r`   access_granted_ataccess_expires_atr   r{   r   rc   contentr   r    r!   r   r      s        )M	T	*	*	*BfVVBZZ%000GM!:!:UKKKJx<<<x((w---I </=0  D
 l9%%GGGr    r   c                   @   e Zd ZdZ eed          Z e ed          d          Z e ed          d          Z	 ee
d          Z e ed                    Z eed	          Z ee          Z ee
          Z ee ej                    	          Zd
S )
WebhookLogwebhook_logsTrC   r   FrF   rI   rH   rJ   N)r   r   r   rW   r   r   rX   r   pg_provider
event_typer	   payload	signaturer   	processedr   processed_aterror_messager   r`   ra   r   r    r!   r   r      s        "M	T	*	*	*B&e444Kse444JfTE***Gvvc{{##Iw...I6(##LF4LLM($(**555JJJr    r   c                   V   e Zd ZdZ eed          Z ee ed          d          Z ee	d          Z
 e ed          d          Z ee          Z ee ed                    Z ee          Z ee	 ej                    	          Z ed
          Z ed          ZdS )SubscriptionRenewalLogsubscription_renewal_logsTrC   r   FrF   rE   zpayments.idrJ   rr   r~   N)r   r   r   rW   r   r   rX   r
   r   r   renewal_dater   r   r   r   r   r	   r   r   r`   ra   r   r   paymentr   r    r!   r   r      s        /M	T	*	*	*BfWjj1C&D&DuUUUO6(U333LVFF2JJ///FVE]]FM!:!:;;JF4LLM($(**555J  <//Ll9%%GGGr    r   ) 
sqlalchemyr   r   r   r   r   r   r	   r
   r   r   sqlalchemy.ormr   sqlalchemy.sqlr   src.models.userr   enumr   r#   r+   r9   ModelrA   rT   rm   r~   rr   r   r   r   r   r   r    r!   <module>r      s   f f f f f f f f f f f f f f f f f f f f f f f f ' ' ' ' ' '                        DI   $ $ $ $ $DI $ $ $    DI   Q Q Q Q Q"( Q Q Q.P P P P P28 P P P"K K K K Kbh K K K&!K !K !K !K !Kbh !K !K !KH-V -V -V -V -V28 -V -V -V`K K K K Kbh K K K & & & & & & & &&6 6 6 6 6 6 6 6& & & & &RX & & & & &r    