
    ui$                        S SK JrJrJrJr  S SKrS SKrS SKrSSKJ	r	  \" S\
5      r\R                  S5      S 5       r\R                  SS	/S
9S 5       r\R                  S5      S 5       r\R                  SS	/S
9S 5       r\R                  SS	/S
9S 5       r\R                  SS	/S
9S 5       r\R                  SS	/S
9S 5       r\R                  S5      S 5       r\R                  S5      S 5       r\R                  SS	/S
9S 5       rg)    )	BlueprintjsonifysessionrequestN   )get_dbapiz/userc                     S[         ;  a  [        SS05      $ [        5       n U R                  5       nUR	                  S[         S   45        UR                  5       n[        S[         S   [         S   U(       a  US   S
.5      $ S	S
.5      $ )Nuser_id	logged_inF+SELECT balance FROM users WHERE user_id = ?Tusernameavatarbalancer   )r   r   r   r   )r   r   r   cursorexecutefetchone)conncurress      /D:\user\Documents\code\html\app\api\__init__.pyapi_userr   	   s    e0D(E!E8D
++-CKK=	@R?TU
,,.CJ'(#%(3y>	   /0	      z	/buy_packPOST)methodsc                     S[         ;  a  [        SS05      S4$ Sn [         S   n[        5       nUR                  5       nUR	                  SU45        UR                  5       nU(       a	  US   U :  a  [        SS05      S	4$  UR	                  S
X45        [        R                  " S5      R                  5       n[        R                  " 5       nUS:  a  SnOUS:  a  SnOUS:  a  SnOUS:  a  SnOSn[        R                  " SS5      n[        R                  " SS5      n	UR	                  SXXxU	[        [        R                  " 5       5      45        UR                  n
UR                  5         [        SU
U
XXxU	[         R                  " S5      [         R                  " S5      S.S.5      $ ! [          a2  nUR#                  5         [        S[%        U5      05      S4s S nA$ S nAff = f)Nr   errorAuth required  i
  r   r   zNo funds  8UPDATE users SET balance = balance - ? WHERE user_id = ?   g{Gz?	Legendaryg?Epicg?Rareg      ?UncommonCommon   i  d   z~
            INSERT INTO cards (owner_id, seed, rarity, power, luck, mint_date)
            VALUES (?, ?, ?, ?, ?, ?)
        Tr   r   )card_ididseedraritypowerluckowner_avatar
owner_name)successr*   card  )r   r   r   r   r   r   osurandomhexrandomrandintinttime	lastrowidcommitget	Exceptionrollbackstr)PRICEr   r   r   r   r,   rndr-   r.   r/   r*   es               r   buy_packrE      s   /0J(KS(P!PEi G8D
++-CKK=zJ
,,.C#i.5(,-s22!/NQVP`azz"~!!#mmo:v4Z&4Z&4Z*fq$'~~a%  VD#diik2BC	E
 --"vW[ 'H 5W[[Q[E\
  	  /Q()3../s   D+F. .
G*8'G%G*%G*z
/inventoryc                  |   S[         ;  a  [        / 5      $ [        5       n U R                  5       nUR	                  S[         S   45        UR                  5        Vs/ s H  n[        U5      PM     nnU H5  n[         R                  " S5      US'   [         R                  " S5      US'   M7     [        U5      $ s  snf )Nr   z
        SELECT * FROM cards 
        WHERE owner_id = ? 
        AND card_id NOT IN (SELECT card_id FROM listings)
        ORDER BY card_id DESC
    r   r1   r   r0   )r   r   r   r   r   fetchalldictr>   )r   r   rowcardsr3   s        r   	inventoryrK   K   s    !38D
++-CKK 
 )
	  #&,,.1.3T#Y.E1$[[4\&{{84^  5> 2s   B9z/sell_card_bankc                     S[         ;  a  [        SS05      S4$ [        R                  n U R	                  S5      n[         S   n[        5       nUR                  5       nUR                  SU45        UR                  5       nU(       a	  US   U:w  a  [        SS05      S	4$ S
SSSSS.R	                  US   R                  5       S
5      nSUS   S-  -   US   S-  -   n[        Xv-  5      nUS:  a  Sn UR                  SU45        UR                  SU45        UR                  SX45        UR                  5         [        SUS.5      $ ! [         a2  n	UR                  5         [        S[        U	5      05      S4s S n	A	$ S n	A	ff = f)Nr   r   r   r   r*   z%SELECT * FROM cards WHERE card_id = ?owner_id	Not yours  r(   g333333?g      ?r      )commonuncommonrareepic	legendaryr-   r)   r.   g?r/   i	  z#DELETE FROM cards WHERE card_id = ?z&DELETE FROM listings WHERE card_id = ?8UPDATE users SET balance = balance + ? WHERE user_id = ?T)r2   pricer4   )r   r   r   jsonr>   r   r   r   r   lowerr:   r=   r?   r@   rA   )
datar*   r   r   r   r3   rarity_mult
base_pricefinal_pricerD   s
             r   sell_card_bankr^   ^   s   /0J(KS(P!P<<Dhhy!Gi G8D
++-CKK7'D<<>D4
#w.-.33#c!QRSWWX\]eXfXlXlXnpqrKW+,Vq0@AJj./KT;/9G:F<wjINQ\Pfg4+>?? /Q()3../s   3AE
 

F'F;FFz/market_listc            
         S[         ;  a  [        SS05      S4$ [        R                  n U R	                  S5      n[        U R	                  S5      5      nUS:  d  US:  a  [        SS	05      S
4$ [         S   n[        5       nUR                  5       nUR                  SU45        UR                  5       nU(       a	  US   U:w  a  [        SS05      S4$  UR                  SXU[        [        R                  " 5       5      45        UR                  5         [        SS05      $ ! [         a"  n[        S[        U5      05      S4s S nA$ S nAff = f)Nr   r   r   r   r*   rW   r)   i@B zInvalid pricer    ,SELECT owner_id FROM cards WHERE card_id = ?rM   rN   rO   zPINSERT INTO listings (card_id, seller_id, price, created_at) VALUES (?, ?, ?, ?)r2   Tr4   )r   r   r   rX   r>   r:   r   r   r   r   r;   r=   r?   rA   )rZ   r*   rW   r   r   r   r3   rD   s           r   market_listra   ~   s2   /0J(KS(P!P<<Dhhy!G!"Es{ego12C77i G8D
++-CKK>
K<<>D4
#w.-.33/feS-=>	@	4()) /Q()3../s   AD$ $
E.EEEz/market_cancelc                     S[         ;  a  [        SS05      S4$ [        R                  n U R	                  S5      n[         S   n[        5       nUR                  5       nUR                  SU45        UR                  5       nU(       d  [        SS05      S4$ US	   U:w  a  [        SS
05      S4$  UR                  SU45        UR                  5         [        SS05      $ ! [         a"  n[        S[        U5      05      S4s S nA$ S nAff = f)Nr   r   r   r   
listing_idz+SELECT * FROM listings WHERE listing_id = ?	Not found  	seller_idrN   rO   )DELETE FROM listings WHERE listing_id = ?r2   Tr4   )r   r   r   rX   r>   r   r   r   r   r=   r?   rA   )rZ   rc   r   r   r   listingrD   s          r   market_cancelri      s    /0J(KS(P!P<<D,'Ji G8D
++-CKK=
}MllnG-.33{w&-.33/?*O	4()) /Q()3../s   0/C   
D*DDDz/market_buyc                  J   S[         ;  a  [        SS05      S4$ [        R                  n U R	                  S5      n[         S   n[        5       nUR                  5       nUR                  SU45        UR                  5       nU(       d  [        SS05      S4$ US	   U:X  a  [        SS
05      S4$ US   nUR                  SU45        UR                  5       nU(       a	  US   U:  a  [        SS05      S4$  UR                  SXb45        UR                  SXeS	   45        UR                  SX%S   45        UR                  SU45        UR                  5         [        SS05      $ ! [         a2  nUR                  5         [        S[        U5      05      S4s S nA$ S nAff = f)Nr   r   r   r   rc   z
        SELECT l.*, c.owner_id as current_owner 
        FROM listings l
        JOIN cards c ON l.card_id = c.card_id
        WHERE l.listing_id = ?
    rd   re   rf   zCannot buy ownr    rW   r   r   zInsufficient fundsr!   rV   z/UPDATE cards SET owner_id = ? WHERE card_id = ?r*   rg   r2   Tr4   )r   r   r   rX   r>   r   r   r   r   r=   r?   r@   rA   )	rZ   rc   buyer_idr   r   rh   rW   buyerrD   s	            r   
market_buyrm      s   /0J(KS(P!P<<D,'Jy!H8D
++-CKK 
  llnG-.33{x'!123S88GEKK={KLLNEE)$u,!567<<	/NQVPabNQV`kXlPmnEZcRdGef?*O	4()) /Q()3../s   7A.E& &
F"0'FF"F"z/market_my_listingsc                     S[         ;  a  [        / 5      $ [        5       n U R                  5       nUR	                  S[         S   45        UR                  5        Vs/ s H  n[        U5      PM     nn[        U5      $ s  snf )Nr   aJ  
        SELECT l.listing_id, l.price, l.created_at, 
               c.*, 
               u.username as seller_name, u.avatar as seller_avatar
        FROM listings l
        JOIN cards c ON l.card_id = c.card_id
        JOIN users u ON l.seller_id = u.user_id
        WHERE l.seller_id = ?
        ORDER BY l.created_at DESC
    )r   r   r   r   r   rG   rH   r   r   rI   listingss       r   market_my_listingsrq      ss    !38D
++-CKK 	 )
		  &)\\^4^cS	^H48 5s   A>z/marketc                      [        5       n U R                  5       nUR                  S5        UR                  5        Vs/ s H  n[	        U5      PM     nn[        U5      $ s  snf )Na,  
        SELECT l.listing_id, l.price, l.created_at, 
               c.*, 
               u.username as seller_name, u.avatar as seller_avatar
        FROM listings l
        JOIN cards c ON l.card_id = c.card_id
        JOIN users u ON l.seller_id = u.user_id
        ORDER BY l.created_at DESC
    )r   r   r   rG   rH   r   ro   s       r   
get_marketrs      sU    8D
++-CKK  	 &)\\^4^cS	^H48 5s   A z
/sign_cardc                     S[         ;  a  [        SS05      S4$ [        R                  n U R	                  S5      nU R	                  S5      S S n[        5       nUR                  5       nUR                  SU45        UR                  5       nU(       a  US	   [         S   :w  a  [        SS
05      S4$ UR                  SX!45        UR                  5         [        SS05      $ )Nr   r   r   r   r*   	signature   r`   rM   rN   rO   z0UPDATE cards SET signature = ? WHERE card_id = ?r2   T)
r   r   r   rX   r>   r   r   r   r   r=   )rZ   r*   ru   r   r   r3   s         r   	sign_cardrw     s    /0J(KS(P!P<<Dhhy!G%cr*I8D
++-CKK>
K<<>D4
#wy'99-.33KKBYDXYKKMIt$%%r   )flaskr   r   r   r   r5   r8   r;   utils.dbr   __name__api_bprouter   rE   rK   r^   ra   ri   rm   rq   rs   rw    r   r   <module>r~      sl   6 6 	   	5(	#g  kF8,// -//b l $ &2/ 3/> nvh// 0/6 1/ 2/4 mfX.(/ /(/T #$ %" i  lVH-& .&r   