From 1a80e3b989ff808c2a6e329fcfa19b3b793068c1 Mon Sep 17 00:00:00 2001 From: dmmuchoki7 Date: Wed, 27 Dec 2023 14:17:10 +0300 Subject: [PATCH] Models added and relationships --- lib/__pycache__/models.cpython-310.pyc | Bin 0 -> 2176 bytes lib/debug.py | 7 +- lib/freebies.db | Bin 20480 -> 36864 bytes .../__pycache__/env.cpython-310.pyc | Bin 0 -> 1854 bytes .../versions/29f5c04539c3_editted_models.py | 28 ++++++++ .../31785c9690e0_freebies_class_table.py | 33 +++++++++ ...26f89afe90_tables_relationships_editted.py | 28 ++++++++ .../9cd8e4c0fac9_tables_relationships.py | 46 +++++++++++++ ...9f5c04539c3_editted_models.cpython-310.pyc | Bin 0 -> 726 bytes ...690e0_freebies_class_table.cpython-310.pyc | Bin 0 -> 967 bytes ...f48c_create_companies_devs.cpython-310.pyc | Bin 0 -> 1061 bytes .../7a71dbf71c64_create_db.cpython-310.pyc | Bin 0 -> 690 bytes ...bles_relationships_editted.cpython-310.pyc | Bin 0 -> 754 bytes ...0fac9_tables_relationships.cpython-310.pyc | Bin 0 -> 1646 bytes lib/models.py | 31 ++++++++- lib/seed.py | 63 ++++++++++++++++++ 16 files changed, 233 insertions(+), 3 deletions(-) create mode 100644 lib/__pycache__/models.cpython-310.pyc create mode 100644 lib/migrations/__pycache__/env.cpython-310.pyc create mode 100644 lib/migrations/versions/29f5c04539c3_editted_models.py create mode 100644 lib/migrations/versions/31785c9690e0_freebies_class_table.py create mode 100644 lib/migrations/versions/9326f89afe90_tables_relationships_editted.py create mode 100644 lib/migrations/versions/9cd8e4c0fac9_tables_relationships.py create mode 100644 lib/migrations/versions/__pycache__/29f5c04539c3_editted_models.cpython-310.pyc create mode 100644 lib/migrations/versions/__pycache__/31785c9690e0_freebies_class_table.cpython-310.pyc create mode 100644 lib/migrations/versions/__pycache__/5f72c58bf48c_create_companies_devs.cpython-310.pyc create mode 100644 lib/migrations/versions/__pycache__/7a71dbf71c64_create_db.cpython-310.pyc create mode 100644 lib/migrations/versions/__pycache__/9326f89afe90_tables_relationships_editted.cpython-310.pyc create mode 100644 lib/migrations/versions/__pycache__/9cd8e4c0fac9_tables_relationships.cpython-310.pyc diff --git a/lib/__pycache__/models.cpython-310.pyc b/lib/__pycache__/models.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..041e633fcae04601cf34e693e23690cdc70f5b9a GIT binary patch literal 2176 zcma)8&2HO95ayDU_#={{V>>R=0(D!Ywc6MU;2sLp35+^OQ55whJ_NihXzj>i%pYYb z3z5*9ax44G8HGIDP?>G3f zscCmd|;{FS*v-LM-pmmzceO^dN&hnpOqMAoV zdXeSI`Y9j58A#Q9F_KAsrtDu}6hDhcv1**erzv!Fv_H13^C=y#Y3 z1@zKbqHPTPG%i8u{qyPf{d4|sXGEKM9%s-gQSDW)As02mT>J`~A&L>>JSh))&5!YTlPoUgO#K{#?t)Wb^SWfsk<%{kdy)67C z2RyS4Z$^*{4sVijgm3IonO2_$Du+1AmncAsn9w3!u*d)t8Z(4k7?*m~M9rFMGZxwP zI?fz$g$XUuKmeQQvtoCFR_ta3a_6oyvMH0ZtQ8 z);!TGCW)BJcn0GuT{$ISnFJ=O0)mAPi{S-g1!a$++v1_Qf#V3rKLHBCe$`%SzhesT z3=F|Io;nBfAhxgBQ!JiI$kA^JY5z)-4{_J^Nq10W&=v6*1&kprh8aTC?G*yL!vPXt zzZ>&GktQOZbcd7CpvZTJ`@8)*i`|jL7(sT^PL$2LgrVg8QwmQ<5wK}E z4`**-Jnn?#NnvrWT+Z=;3uG8q9_Ozw;&g8Dc}=KVm6WzLQ7AnTk`R@jljiq}i(C-T zCJ;+$lcB1tJrA~&R48Qz7U}`>^vZfWtB!HY zomk}{m)sjJwZK6xd2=rLb1nrnm*mHIsC)2NPIzJS%fNoD$F;uzJp@w;f@u++Ok8YuSrx+k7#y-h}gySs=~1ih^%@t{@oE z{%CvZCL_p*>rb$8I~~0$s&Z(x>Xlnj`;K0TA3n`v9y8xh!}-Z8_yu>yZy(Q5jd7e_ zfTRYNZ4&DwZUv8+NkA`K2OEc4C#2RP>v3mYx#jCLPJ08$CiTfn`c%xJ45WoZ1xwGp zLS{=ksRt_-yz}=~zFLz0382r&;#(tqS}=dWyR2ql)iG69QAjKNuR4L6K-mZNUG$Xh h*^&sktzi<(G|cy|;p)1fGn0k*r?ck2p&j}g{{MUY?9l)K literal 0 HcmV?d00001 diff --git a/lib/debug.py b/lib/debug.py index 4f922eb69..d7dff0ce5 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -1,9 +1,12 @@ #!/usr/bin/env python3 from sqlalchemy import create_engine - -from models import Company, Dev +from sqlalchemy.orm import sessionmaker +from models import Company, Dev, Freebie if __name__ == '__main__': engine = create_engine('sqlite:///freebies.db') + Session = sessionmaker(bind = engine) + session = Session() + import ipdb; ipdb.set_trace() diff --git a/lib/freebies.db b/lib/freebies.db index 12beb1c963e832db481e7a7493e3029e691ac4dc..fccf6c3d2e6d026ec18029de99b841f61b690c8f 100644 GIT binary patch literal 36864 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 delta 113 zcmZozz|^pSae}lUD+2=q2*UvLL>*&MRtCLzSzi7h3@m(74E((OJNfGQq&5o*EaTlQ r#dk}P$285{DB08^Db2(pd6U8yej#K5UXW1&n;8Rs@lQ%%VS+LN+G!Z? diff --git a/lib/migrations/__pycache__/env.cpython-310.pyc b/lib/migrations/__pycache__/env.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ad572f80f116224df4d00a2c97a0680f80cb5869 GIT binary patch literal 1854 zcmZuy&5ztP6t^>(%xvakw+pR$K*g#+B~rVisuElfq8}htLaVARAVx@$CwVjDS;q;s zv)irOQ{jL_)f?yCBmV(^ORk*w7bvJaJ3HNN!6Uys``Pcq{{1}VXcQA{pZxw4?DYxx z!wt^14h}xYZhk?LlblLY&?%)(4`fhurX8<$P!Fe}*F)JYqG?14M62Gk2fbB4@77d* z2-NA%+TD@dDB@|1tK!vQI?RW8Ki~KkXoiM|P=X9PWW9}pO?wPf@s zW<(O&#B(9xcB$rKfun6u3!xyL>#|6*^=w#`r9^8FXDmFjyQqh^xPd0pU~8>1=WN|5 zDtH*=Hg@w33QLY?PLJtRVuMxZ39(@w0Jti+kUW<+~*>6c6g(M`; z-0?&Y$aP{qIKaZ)?>p>nF6r?vG1UE9u|g~~x1v;r3B|6I^SQ(#uCSuaVJD6mwueh$ zSX)r7!7#f7H+0po17VkJRU6AV`}+P@emz$?QzgzQ_Ju!^tGK1C7t7Nbh8}sAL1p<& zg5R|S4U8Lh08;KScI%LtJyBIcEquV%6U#LCZ2gu4V0o#oSO)u`m;%T#i#xY&-n+|e z$!6$op9|?CoK$j~ONsfH>-2Zv5oEQ6j}qp?Lm{k>wh+#vvD$|(-JFkTGA%00%Gy@7 zJ#qSYY<`ejW=kjzcWNykHgUx@FN{5u&~z0qAWy=kgQjNFa=ieX7GQbKEpJ9rSkPRi zGof~cv+?>?^uUeJ%>W^oTFsT=nOoP4 zb*<9VOHQbEwEK*JBjTz+up|ft&3XdZ|!iJ*Pvr zs=r%Hc@M+*C(q^Sv8uP6ABR$X&WUXlnAqSX1xHeS(HR^rTj3zmoPQfb{yaZMlW{l- z5HtY|Y4lGVp`_8PIE?9~SL2sK_wq~qJ}yZD-NVmrvek@bxj=#}cG~2%gH{ut9#vbc zFQbP%EM_8WllS#+os{fe{nXLAiQFqGjgFk3{+iTnl@7-~ezPge8v3c*aHd3Gtgo~G lDVk~tpSiyP^B#&J83sc-45HALG>jq|_v4HG3o(s@e*q%r`5*uQ literal 0 HcmV?d00001 diff --git a/lib/migrations/versions/29f5c04539c3_editted_models.py b/lib/migrations/versions/29f5c04539c3_editted_models.py new file mode 100644 index 000000000..e4955e73b --- /dev/null +++ b/lib/migrations/versions/29f5c04539c3_editted_models.py @@ -0,0 +1,28 @@ +"""Editted models + +Revision ID: 29f5c04539c3 +Revises: 9326f89afe90 +Create Date: 2023-12-27 14:12:26.039794 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '29f5c04539c3' +down_revision = '9326f89afe90' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/lib/migrations/versions/31785c9690e0_freebies_class_table.py b/lib/migrations/versions/31785c9690e0_freebies_class_table.py new file mode 100644 index 000000000..6a11917bb --- /dev/null +++ b/lib/migrations/versions/31785c9690e0_freebies_class_table.py @@ -0,0 +1,33 @@ +"""Freebies class table + +Revision ID: 31785c9690e0 +Revises: 5f72c58bf48c +Create Date: 2023-12-27 12:31:22.687794 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '31785c9690e0' +down_revision = '5f72c58bf48c' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('freebies', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('item_name', sa.String(), nullable=True), + sa.Column('value', sa.Integer(), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('freebies') + # ### end Alembic commands ### diff --git a/lib/migrations/versions/9326f89afe90_tables_relationships_editted.py b/lib/migrations/versions/9326f89afe90_tables_relationships_editted.py new file mode 100644 index 000000000..fb354c8c9 --- /dev/null +++ b/lib/migrations/versions/9326f89afe90_tables_relationships_editted.py @@ -0,0 +1,28 @@ +"""Tables relationships editted + +Revision ID: 9326f89afe90 +Revises: 9cd8e4c0fac9 +Create Date: 2023-12-27 13:26:48.061328 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '9326f89afe90' +down_revision = '9cd8e4c0fac9' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/lib/migrations/versions/9cd8e4c0fac9_tables_relationships.py b/lib/migrations/versions/9cd8e4c0fac9_tables_relationships.py new file mode 100644 index 000000000..caa0a3af9 --- /dev/null +++ b/lib/migrations/versions/9cd8e4c0fac9_tables_relationships.py @@ -0,0 +1,46 @@ +"""Tables relationships + +Revision ID: 9cd8e4c0fac9 +Revises: 31785c9690e0 +Create Date: 2023-12-27 13:23:35.803194 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '9cd8e4c0fac9' +down_revision = '31785c9690e0' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('company_dev', + sa.Column('company_id', sa.Integer(), nullable=False), + sa.Column('dev_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['company_id'], ['companies.id'], name=op.f('fk_company_dev_company_id_companies')), + sa.ForeignKeyConstraint(['dev_id'], ['devs.id'], name=op.f('fk_company_dev_dev_id_devs')), + sa.PrimaryKeyConstraint('company_id', 'dev_id') + ) + with op.batch_alter_table('freebies', schema=None) as batch_op: + batch_op.add_column(sa.Column('company_id', sa.Integer(), nullable=True)) + batch_op.add_column(sa.Column('dev_id', sa.Integer(), nullable=True)) + batch_op.create_foreign_key(batch_op.f('fk_freebies_dev_id_devs'), 'devs', ['dev_id'], ['id']) + batch_op.create_foreign_key(batch_op.f('fk_freebies_company_id_companies'), 'companies', ['company_id'], ['id']) + + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('freebies', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_freebies_company_id_companies'), type_='foreignkey') + batch_op.drop_constraint(batch_op.f('fk_freebies_dev_id_devs'), type_='foreignkey') + batch_op.drop_column('dev_id') + batch_op.drop_column('company_id') + + op.drop_table('company_dev') + # ### end Alembic commands ### diff --git a/lib/migrations/versions/__pycache__/29f5c04539c3_editted_models.cpython-310.pyc b/lib/migrations/versions/__pycache__/29f5c04539c3_editted_models.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a1193cffe2992031e9eb3223a514e28d0360fdd1 GIT binary patch literal 726 zcmZ`%J&)5s5M6&Hb~XtGRCI1rK4_gQ!-BHk_;5s+f#yi0lw%6=BK|!LUR!-HwVcpbY*~(jBtzFwbj^} zZJF4qoy_HKHsFJ7$eqkX_xYH6-2dWcBaB9zVnn%fPiB)()oWh$J@B9r9BM`BTi92s z5^eD2E)Ak&ds!@2mvK_WrxQ?Vki^l|_9kIlNEY-~0_!2TL%{q+6wjB@Jh~2+t8^Kq z(bdHwPOg&`r9V(GnOWKv-C9r1E9=R5MLm?z?_^t;{ByIA+@k+<5jeRg57zpDNFUiF z{Q4Z0qJfaJJp$~Z7F`2v9~RhO*p*B{9J0I=b;a2s><)b?+Ibhxw-R7e!MvBOcn>nH zt4-Kc?#E1o4m1s3Bt^l1AMJ#W9{WR7e$_HkJZp@szRE}HB}#KRu?5S2W=~+ zefej-dTMIsk8~qhTaR%6%tUsJxpA55bEC5#!o$D}) zlH;V;=_Z|I5OtGLuRBVTqtoGFaCQ=g-*nkl+g6B|6V=*fR;^t|4jXEGI-iYUULbDZ>T4QjI013uyZS=^9iktD8@2=@gP!d1Fo&1ylYdtKbHN z@~$e8vm5o`g~$smR?lEH=1f)s=dAi-iF=x-4nIG{b6!A9@KOg@0_9}^tco*EATH-v zLNCVYoYS1(Ra~yBIcJ@+*Vz`{(UjR65HZbXagpB$Txl0&yaZwFl<}_O>7Q=X+WSod zN99WSi&Fnd;J(qhrGtkKZSw?n@JkrY?(632*Px)y|c$TKh#}tZLo^841TZ(Bmhhim6 z;VKZ@o2>Q?ZF;wy3Cyy2s@(-DRY;%&Mr6ua-C%v*f6EIV7o038Jh3&uG!?s6%MWbV Lb#3#6&cWVqkMa8> literal 0 HcmV?d00001 diff --git a/lib/migrations/versions/__pycache__/5f72c58bf48c_create_companies_devs.cpython-310.pyc b/lib/migrations/versions/__pycache__/5f72c58bf48c_create_companies_devs.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..333c907b5263bec8abd495e6f0bf7194372b4290 GIT binary patch literal 1061 zcma)5&2G~`5cXee$4x3!D#S4or%0qunxrWaLP)8QDx?TePPtec@1!x5X{C=8wn1qwd2{@-On@MH|F(vVBi>h{RF>l!}z8by8~m!bDUBe zYD^4jQY$qxYhsz&w^MuKP-jx1m5EF3iHFmtd(@-;wKJ)rSET`Z0ktoTX6?gOEPxcy zh+7g^PI5tS>TSO^yD z^SeV6G{PxAqA83UlbVI~)}~fr-8gH5+SK`MZz2_pR50S+M!fBrZREzK*4kWG%o4}{ zKb-9?2MITj#Ohd8Z|PH3LSJBYK3k+InWmr|MlyJ#>NCDzG+~#~3W!jSX1VDJ3u{od zQiQ13T(Bfj?ue(0j4AJ&6>tecxfg}N%j)ozNHQW;FJU#}OcsJ9toUMx1H{>wAJ^fW zXAn}dL<37md7c3)!kAMC^Er{w4M{ZTX+p^=%vZ&nvsT`1%>=+Sffho>??8lUG7Yoj zQjh|>K!!^Yx*cS=t5~#6{I>i^mvxk{l()$7Duw%6s0V0V>%i2HZ#q9+xAgp9;t;p~ zQdl?nM&XC(lnSrStwyNVmUnwB_HbXgXqr~ZWIzSaOCIkiDLtKus#5-*Z4!HgOX;8q ztbJ4H3=yM(uW@rvc~L}p97W0_DP+?m-lEH^l%(+-vX!XgQRR#6U!v+7IJ#R-1!3_# v!WMv3s(?ZcjLL|!O~sq<{WC%TX~yXyg=Z$>ORcJ7)I223aZLRL_Wr#;Bo-5| literal 0 HcmV?d00001 diff --git a/lib/migrations/versions/__pycache__/7a71dbf71c64_create_db.cpython-310.pyc b/lib/migrations/versions/__pycache__/7a71dbf71c64_create_db.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1305ffb05e36c98e1d63bf084dcd2d5a26528b79 GIT binary patch literal 690 zcmZ`$O^?$s5OqGbN!=|6IB?Cihi;lJX{89Em3A*&dSHcwa*3SGEQxU9V5fz0UVhB} z1AdFIoH%pigxw--L1L_Vo{`7n_dH@crNr3!+gE(+5c1t7r{8ZUG(}U zi`HzNKzX-Ls@03*392lj*T?c3b0>=~7njTVVmVLJC`q$Lnx*MQnygmKgwh{|ADKDY z75zq^pLWwDiNjWQm9026qnBJ8|LGe5a!VeZ%>$8v$sXa?=eQOv#=v$4aEDy_zntGm#InKpAX)VRWz3s0ZkzX#4MwtxcPOoP6`xWq zj=xhtdC~86u z+Hcs*CORkz5LHp=fN^Zgrjqt?P1Q%vcvWM&*REnZlz--@r?zMDn3j@tRb6maB3GIM q_Sk_cM0cQncm*VF(`hU)^+|qX7gu3c$G~lhK#E4>V^eLxGHT6>nr&wK7Dg zx(*=--s8TK`Z#=dvkq5Dyx1;Rbc?Im=?0}fEntaP#cWH9Rd6kkb{O7hScmZ}PNwsC z8ovzZ$vR%Fua=jy#XO0ZLGVM%ClgEAyxpkLd1lSdGOE77ZYP?;ygxTflWXliT@65P z$%D0dAi~$|FZ{ZXN?v0Gbgu#T$aq_0(?tabjM|b)Od^_ufZ>sSOJgw_Q2l_${fZsL8v@guNp@ETxi7k41+f0Va%QE0amMM=itn;c6=5rOu z&y2F7#QLCYNtG`ihpomYr>^5Pdo|7lZHh8uG)E>?0N7#!GULrr{_(qi1s=8euWAlE YhOf=Aq9JY=0qFPjx0q^&AdNGn7uq2|S!_)HS-`qr_N zk_Dd18(Q%T$z%Tr%_~p*0__85#!1N*JeuP(=RW5$X`|t4`2F$rH&(MX?N52w{R}*O zgFBZ1w2=k`^oYdzNGB3EB4cENIjTTqWPvfVaXU~08=POwQ5CT&xQMx6Jk#3stMoY? zM=Wn~7SSS1lYACtx$Az<7GaLZ*3-wQtziHs?0(Rl&|p|{Sbo|X^d6l&2!;=bUDkEa zIHLt?Jw|Za>UaBtPOsnTKWg;`r~Sd{;KA`pchDQ&ciq1*Y^_a%o@VEwzH3?3cP$Ew zvtrJZK+11Ff=C_r8SdP~Q=zR0kV3yOKri%_xz@k{^V(39$_JDR=u-mLl%SRc_L_jB zBr#P;uWsn>mcFtKE;2ZB@PDwIRK(3Hg_^^}fq-QO|-s z^l(f0+@F#)UIVEm=QeVhD#{J#2Q0CP>$QQ!)t+fRE&u5idXeh|Zb@t3ITy7cjWe1o zeP9dWZVw?m!Av{JJc?wIg@s%{gsXZf5VHI@1aWV2>2Ecpz!nc-gQ6UoF%ufID;p)0 z*5Lu+cmCZ z7l?YGI?pfE4fUJ~>nx4taU$%eNx`O!i-RXAXW=yYmMzb)!3$2qq!45x4!+}IO!@LA znQd+yPD-QxC0pV(ol+^y-e~+YjO*{$-Ykuo2XujeEm)Lh zF-rz42{2sFZGi(kL)v*1D z2o3=b8xDbvL-2(hf(sp6*8psMFrjjdFVK6MwM$!>a@b*q^}Z{($Ddj%YgRv19E`rtdpa6dlqjasjc%0 z{?6MqVf#L$f$s~OMl2qOLD{u#{xYJGoQx&^2t|d%HxI68NEcYj^8FQ!F{cT(BTg`j xa^V8YSOU49CaPk}-%gY&UKOhIWt_r1VqfDkspU-srdGEdVwxtA%Qg0z{{YeU$C&^C literal 0 HcmV?d00001 diff --git a/lib/models.py b/lib/models.py index 2681bee5a..ea7a9b44a 100644 --- a/lib/models.py +++ b/lib/models.py @@ -1,4 +1,4 @@ -from sqlalchemy import ForeignKey, Column, Integer, String, MetaData +from sqlalchemy import ForeignKey, Column, Integer, String, MetaData, Table from sqlalchemy.orm import relationship, backref from sqlalchemy.ext.declarative import declarative_base @@ -9,6 +9,15 @@ Base = declarative_base(metadata=metadata) +#Relationship table model +company_dev= Table( + 'company_dev', + Base.metadata, + Column('company_id', ForeignKey('companies.id'), primary_key=True), + Column ('dev_id', ForeignKey('devs.id'), primary_key = True), + extend_existing=True, +) + class Company(Base): __tablename__ = 'companies' @@ -16,6 +25,9 @@ class Company(Base): name = Column(String()) founding_year = Column(Integer()) + freebies= relationship('Freebie', backref= backref('company')) + devs= relationship('Dev', secondary= company_dev, back_populates='companies') + def __repr__(self): return f'' @@ -25,5 +37,22 @@ class Dev(Base): id = Column(Integer(), primary_key=True) name= Column(String()) + freebies= relationship('Freebie', backref= backref('dev')) + companies = relationship('Company', secondary=company_dev, back_populates= 'devs') + def __repr__(self): return f'' + +#Freebies table +class Freebie(Base): + __tablename__ = 'freebies' + id= Column(Integer(), primary_key=True) + item_name= Column(String()) + value= Column(Integer()) + + company_id= Column(Integer(), ForeignKey('companies.id')) + dev_id= Column(Integer(), ForeignKey('devs.id')) + + def __repr__(self): + return f'Freebie(id={self.id}, '+ \ + f'itemname= {self.item_name})' diff --git a/lib/seed.py b/lib/seed.py index b16becbbb..4067dd010 100644 --- a/lib/seed.py +++ b/lib/seed.py @@ -1,3 +1,66 @@ #!/usr/bin/env python3 # Script goes here! +from faker import Faker +import random + +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +from models import Company , Freebie , Dev + +if __name__ == '__main__': + engine = create_engine('sqlite:///freebies.db') + Session = sessionmaker(bind = engine) + session = Session() + + session.query(Company).delete() + session.query(Dev).delete() + session.query(Freebie).delete() + + fake = Faker() + + companies = [] + for i in range(30): + company = Company( + name=fake.unique.name(), + founding_year=random.randint(1980, 2023) + ) + + # add and commit individually to get IDs back + session.add(company) + session.commit() + + companies.append(company) + + devs = [] + for i in range(25): + dev = Dev( + name=fake.name(), + ) + + session.add(dev) + session.commit() + + devs.append(dev) + + freebies= [] + for company in companies: + for i in range (random.randint(1,5)): + dev = random.choice(devs) + if company not in dev.companies: + dev.companies.append(company) + session.add(dev) + session.commit() + + freebie= Freebie( + item_name = fake.name(), + value= random.randint(0,20), + company_id= company.id, + dev_id= dev.id, + ) + freebies.append(freebie) + + session.bulk_save_objects(freebies) + session.commit() + session.close()