From 7864903b562cacbb4765154f68a81e2ea7739081 Mon Sep 17 00:00:00 2001 From: Lauren Date: Thu, 11 May 2023 14:32:26 -0600 Subject: [PATCH] complete lab --- lib/debug.py | 7 +- lib/freebies.db | Bin 20480 -> 57344 bytes .../versions/22a3b8201236_give_away_try.py | 28 ++++++++ .../295886a7a51f_cls_in_oldest_company.py | 28 ++++++++ .../2bf8ba1d8850_trying_setting_freebie_id.py | 28 ++++++++ .../versions/2c2ff2e7a22f_fix_args.py | 28 ++++++++ .../4866d9558fde_add_freebies_table.py | 37 +++++++++++ ...52c0650c3daf_self_arg_for_print_details.py | 28 ++++++++ .../5fdbfdd88f7f_give_away_better_code.py | 28 ++++++++ ...0d7e_made_oldest_company_a_class_method.py | 28 ++++++++ ...70e7b5_wrote_received_one_hope_it_works.py | 28 ++++++++ .../versions/79e914f63417_oldest_company.py | 28 ++++++++ .../versions/7db381407e3c_received_one_try.py | 28 ++++++++ .../8ca3b0acbfe3_altered_print_details.py | 28 ++++++++ .../90acc6fbf936_update_oldest_company.py | 28 ++++++++ .../versions/a32e60ac241e_add_freebie.py | 24 +++++++ .../aae63ddbde0b_give_away_added_dev_id.py | 28 ++++++++ .../versions/b335d574067b_give_freebie.py | 28 ++++++++ ...225_add_print_details_method_to_freebie.py | 28 ++++++++ .../c712f403afd6_company_give_freebie.py | 28 ++++++++ ...1e1a22656_give_freebie_returns_instance.py | 28 ++++++++ .../versions/f2fd9cbf71e8_adjust_again.py | 28 ++++++++ lib/models.py | 60 +++++++++++++++++- lib/seed.py | 53 +++++++++++++++- 24 files changed, 681 insertions(+), 4 deletions(-) create mode 100644 lib/migrations/versions/22a3b8201236_give_away_try.py create mode 100644 lib/migrations/versions/295886a7a51f_cls_in_oldest_company.py create mode 100644 lib/migrations/versions/2bf8ba1d8850_trying_setting_freebie_id.py create mode 100644 lib/migrations/versions/2c2ff2e7a22f_fix_args.py create mode 100644 lib/migrations/versions/4866d9558fde_add_freebies_table.py create mode 100644 lib/migrations/versions/52c0650c3daf_self_arg_for_print_details.py create mode 100644 lib/migrations/versions/5fdbfdd88f7f_give_away_better_code.py create mode 100644 lib/migrations/versions/6cc3e65a0d7e_made_oldest_company_a_class_method.py create mode 100644 lib/migrations/versions/70197d70e7b5_wrote_received_one_hope_it_works.py create mode 100644 lib/migrations/versions/79e914f63417_oldest_company.py create mode 100644 lib/migrations/versions/7db381407e3c_received_one_try.py create mode 100644 lib/migrations/versions/8ca3b0acbfe3_altered_print_details.py create mode 100644 lib/migrations/versions/90acc6fbf936_update_oldest_company.py create mode 100644 lib/migrations/versions/a32e60ac241e_add_freebie.py create mode 100644 lib/migrations/versions/aae63ddbde0b_give_away_added_dev_id.py create mode 100644 lib/migrations/versions/b335d574067b_give_freebie.py create mode 100644 lib/migrations/versions/c371c22f4225_add_print_details_method_to_freebie.py create mode 100644 lib/migrations/versions/c712f403afd6_company_give_freebie.py create mode 100644 lib/migrations/versions/da71e1a22656_give_freebie_returns_instance.py create mode 100644 lib/migrations/versions/f2fd9cbf71e8_adjust_again.py diff --git a/lib/debug.py b/lib/debug.py index 4f922eb69..ab6b5f08c 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -2,8 +2,13 @@ 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..5b415fa39556554c72075b0ad994f08a49bba713 100644 GIT binary patch literal 57344 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 diff --git a/lib/migrations/versions/22a3b8201236_give_away_try.py b/lib/migrations/versions/22a3b8201236_give_away_try.py new file mode 100644 index 000000000..32f5708c0 --- /dev/null +++ b/lib/migrations/versions/22a3b8201236_give_away_try.py @@ -0,0 +1,28 @@ +"""give_away try + +Revision ID: 22a3b8201236 +Revises: 70197d70e7b5 +Create Date: 2023-05-11 14:21:18.002440 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '22a3b8201236' +down_revision = '70197d70e7b5' +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/295886a7a51f_cls_in_oldest_company.py b/lib/migrations/versions/295886a7a51f_cls_in_oldest_company.py new file mode 100644 index 000000000..afb88026b --- /dev/null +++ b/lib/migrations/versions/295886a7a51f_cls_in_oldest_company.py @@ -0,0 +1,28 @@ +"""cls in oldest_company + +Revision ID: 295886a7a51f +Revises: 6cc3e65a0d7e +Create Date: 2023-05-11 12:59:39.156913 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '295886a7a51f' +down_revision = '6cc3e65a0d7e' +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/2bf8ba1d8850_trying_setting_freebie_id.py b/lib/migrations/versions/2bf8ba1d8850_trying_setting_freebie_id.py new file mode 100644 index 000000000..ddb85cbec --- /dev/null +++ b/lib/migrations/versions/2bf8ba1d8850_trying_setting_freebie_id.py @@ -0,0 +1,28 @@ +"""trying setting Freebie.id + +Revision ID: 2bf8ba1d8850 +Revises: c712f403afd6 +Create Date: 2023-05-11 12:46:32.041625 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '2bf8ba1d8850' +down_revision = 'c712f403afd6' +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/2c2ff2e7a22f_fix_args.py b/lib/migrations/versions/2c2ff2e7a22f_fix_args.py new file mode 100644 index 000000000..21c8ce139 --- /dev/null +++ b/lib/migrations/versions/2c2ff2e7a22f_fix_args.py @@ -0,0 +1,28 @@ +"""fix args + +Revision ID: 2c2ff2e7a22f +Revises: 295886a7a51f +Create Date: 2023-05-11 13:37:21.423223 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '2c2ff2e7a22f' +down_revision = '295886a7a51f' +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/4866d9558fde_add_freebies_table.py b/lib/migrations/versions/4866d9558fde_add_freebies_table.py new file mode 100644 index 000000000..bf3f660fd --- /dev/null +++ b/lib/migrations/versions/4866d9558fde_add_freebies_table.py @@ -0,0 +1,37 @@ +"""add freebies table + +Revision ID: 4866d9558fde +Revises: a32e60ac241e +Create Date: 2023-05-11 11:24:51.693097 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '4866d9558fde' +down_revision = 'a32e60ac241e' +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('company_id', sa.Integer(), nullable=True), + sa.Column('dev_id', sa.Integer(), nullable=True), + sa.Column('item_name', sa.String(), nullable=True), + sa.Column('value', sa.Integer(), nullable=True), + sa.ForeignKeyConstraint(['company_id'], ['companies.id'], name=op.f('fk_freebies_company_id_companies')), + sa.ForeignKeyConstraint(['dev_id'], ['devs.id'], name=op.f('fk_freebies_dev_id_devs')), + 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/52c0650c3daf_self_arg_for_print_details.py b/lib/migrations/versions/52c0650c3daf_self_arg_for_print_details.py new file mode 100644 index 000000000..059fb45bd --- /dev/null +++ b/lib/migrations/versions/52c0650c3daf_self_arg_for_print_details.py @@ -0,0 +1,28 @@ +"""self arg for print_details + +Revision ID: 52c0650c3daf +Revises: f2fd9cbf71e8 +Create Date: 2023-05-11 11:57:57.214857 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '52c0650c3daf' +down_revision = 'f2fd9cbf71e8' +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/5fdbfdd88f7f_give_away_better_code.py b/lib/migrations/versions/5fdbfdd88f7f_give_away_better_code.py new file mode 100644 index 000000000..2307c08dc --- /dev/null +++ b/lib/migrations/versions/5fdbfdd88f7f_give_away_better_code.py @@ -0,0 +1,28 @@ +"""give_away better code + +Revision ID: 5fdbfdd88f7f +Revises: 22a3b8201236 +Create Date: 2023-05-11 14:26:11.065418 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '5fdbfdd88f7f' +down_revision = '22a3b8201236' +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/6cc3e65a0d7e_made_oldest_company_a_class_method.py b/lib/migrations/versions/6cc3e65a0d7e_made_oldest_company_a_class_method.py new file mode 100644 index 000000000..d3c4d576a --- /dev/null +++ b/lib/migrations/versions/6cc3e65a0d7e_made_oldest_company_a_class_method.py @@ -0,0 +1,28 @@ +"""made oldest_company a class method + +Revision ID: 6cc3e65a0d7e +Revises: 79e914f63417 +Create Date: 2023-05-11 12:58:09.056455 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '6cc3e65a0d7e' +down_revision = '79e914f63417' +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/70197d70e7b5_wrote_received_one_hope_it_works.py b/lib/migrations/versions/70197d70e7b5_wrote_received_one_hope_it_works.py new file mode 100644 index 000000000..09ee0c23e --- /dev/null +++ b/lib/migrations/versions/70197d70e7b5_wrote_received_one_hope_it_works.py @@ -0,0 +1,28 @@ +"""wrote received_one hope it works + +Revision ID: 70197d70e7b5 +Revises: 7db381407e3c +Create Date: 2023-05-11 14:14:22.611393 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '70197d70e7b5' +down_revision = '7db381407e3c' +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/79e914f63417_oldest_company.py b/lib/migrations/versions/79e914f63417_oldest_company.py new file mode 100644 index 000000000..a3701e635 --- /dev/null +++ b/lib/migrations/versions/79e914f63417_oldest_company.py @@ -0,0 +1,28 @@ +"""oldest_company + +Revision ID: 79e914f63417 +Revises: 2bf8ba1d8850 +Create Date: 2023-05-11 12:56:41.021847 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '79e914f63417' +down_revision = '2bf8ba1d8850' +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/7db381407e3c_received_one_try.py b/lib/migrations/versions/7db381407e3c_received_one_try.py new file mode 100644 index 000000000..867fd4c73 --- /dev/null +++ b/lib/migrations/versions/7db381407e3c_received_one_try.py @@ -0,0 +1,28 @@ +"""received_one try + +Revision ID: 7db381407e3c +Revises: 90acc6fbf936 +Create Date: 2023-05-11 14:11:34.632909 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '7db381407e3c' +down_revision = '90acc6fbf936' +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/8ca3b0acbfe3_altered_print_details.py b/lib/migrations/versions/8ca3b0acbfe3_altered_print_details.py new file mode 100644 index 000000000..aeb106091 --- /dev/null +++ b/lib/migrations/versions/8ca3b0acbfe3_altered_print_details.py @@ -0,0 +1,28 @@ +"""altered print_details + +Revision ID: 8ca3b0acbfe3 +Revises: c371c22f4225 +Create Date: 2023-05-11 11:54:20.506360 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '8ca3b0acbfe3' +down_revision = 'c371c22f4225' +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/90acc6fbf936_update_oldest_company.py b/lib/migrations/versions/90acc6fbf936_update_oldest_company.py new file mode 100644 index 000000000..c4c08a33b --- /dev/null +++ b/lib/migrations/versions/90acc6fbf936_update_oldest_company.py @@ -0,0 +1,28 @@ +"""update oldest_company + +Revision ID: 90acc6fbf936 +Revises: da71e1a22656 +Create Date: 2023-05-11 13:58:07.825636 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '90acc6fbf936' +down_revision = 'da71e1a22656' +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/a32e60ac241e_add_freebie.py b/lib/migrations/versions/a32e60ac241e_add_freebie.py new file mode 100644 index 000000000..435e6aafc --- /dev/null +++ b/lib/migrations/versions/a32e60ac241e_add_freebie.py @@ -0,0 +1,24 @@ +"""add Freebie + +Revision ID: a32e60ac241e +Revises: 5f72c58bf48c +Create Date: 2023-05-11 11:20:04.968121 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'a32e60ac241e' +down_revision = '5f72c58bf48c' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table('freebies') + + +def downgrade() -> None: + op.drop_table('freebies') diff --git a/lib/migrations/versions/aae63ddbde0b_give_away_added_dev_id.py b/lib/migrations/versions/aae63ddbde0b_give_away_added_dev_id.py new file mode 100644 index 000000000..8fd64d5fc --- /dev/null +++ b/lib/migrations/versions/aae63ddbde0b_give_away_added_dev_id.py @@ -0,0 +1,28 @@ +"""give_away added dev.id + +Revision ID: aae63ddbde0b +Revises: 5fdbfdd88f7f +Create Date: 2023-05-11 14:28:30.603566 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'aae63ddbde0b' +down_revision = '5fdbfdd88f7f' +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/b335d574067b_give_freebie.py b/lib/migrations/versions/b335d574067b_give_freebie.py new file mode 100644 index 000000000..f0df9bad8 --- /dev/null +++ b/lib/migrations/versions/b335d574067b_give_freebie.py @@ -0,0 +1,28 @@ +"""give_freebie + +Revision ID: b335d574067b +Revises: 2c2ff2e7a22f +Create Date: 2023-05-11 13:42:46.336445 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'b335d574067b' +down_revision = '2c2ff2e7a22f' +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/c371c22f4225_add_print_details_method_to_freebie.py b/lib/migrations/versions/c371c22f4225_add_print_details_method_to_freebie.py new file mode 100644 index 000000000..7304dce0f --- /dev/null +++ b/lib/migrations/versions/c371c22f4225_add_print_details_method_to_freebie.py @@ -0,0 +1,28 @@ +"""add print_details method to Freebie + +Revision ID: c371c22f4225 +Revises: 4866d9558fde +Create Date: 2023-05-11 11:41:27.792032 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'c371c22f4225' +down_revision = '4866d9558fde' +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/c712f403afd6_company_give_freebie.py b/lib/migrations/versions/c712f403afd6_company_give_freebie.py new file mode 100644 index 000000000..28bb5b0b9 --- /dev/null +++ b/lib/migrations/versions/c712f403afd6_company_give_freebie.py @@ -0,0 +1,28 @@ +"""Company give_freebie + +Revision ID: c712f403afd6 +Revises: 52c0650c3daf +Create Date: 2023-05-11 12:35:47.186602 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'c712f403afd6' +down_revision = '52c0650c3daf' +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/da71e1a22656_give_freebie_returns_instance.py b/lib/migrations/versions/da71e1a22656_give_freebie_returns_instance.py new file mode 100644 index 000000000..83e5b7685 --- /dev/null +++ b/lib/migrations/versions/da71e1a22656_give_freebie_returns_instance.py @@ -0,0 +1,28 @@ +"""give_freebie returns instance + +Revision ID: da71e1a22656 +Revises: b335d574067b +Create Date: 2023-05-11 13:51:56.500350 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'da71e1a22656' +down_revision = 'b335d574067b' +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/f2fd9cbf71e8_adjust_again.py b/lib/migrations/versions/f2fd9cbf71e8_adjust_again.py new file mode 100644 index 000000000..01124362f --- /dev/null +++ b/lib/migrations/versions/f2fd9cbf71e8_adjust_again.py @@ -0,0 +1,28 @@ +"""adjust again + +Revision ID: f2fd9cbf71e8 +Revises: 8ca3b0acbfe3 +Create Date: 2023-05-11 11:56:52.222755 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'f2fd9cbf71e8' +down_revision = '8ca3b0acbfe3' +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/models.py b/lib/models.py index 2681bee5a..edbef156c 100644 --- a/lib/models.py +++ b/lib/models.py @@ -1,6 +1,12 @@ -from sqlalchemy import ForeignKey, Column, Integer, String, MetaData -from sqlalchemy.orm import relationship, backref +from sqlalchemy import ForeignKey, Column, Integer, String, MetaData, create_engine +from sqlalchemy.orm import relationship, backref, sessionmaker from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.ext.associationproxy import association_proxy + + +engine = create_engine('sqlite:///freebies.db') +Session = sessionmaker(bind=engine) +session = Session() convention = { "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", @@ -9,6 +15,27 @@ Base = declarative_base(metadata=metadata) +class Freebie(Base): + __tablename__ = 'freebies' + def __init__(self, company_id, dev_id, item_name, value, id = None): + self.id = id + self.company_id = Column(Integer(), ForeignKey('companies.id')) + self.dev_id = Column(Integer(), ForeignKey('devs.id')) + self.item_name = item_name + self.value = value + + id=Column(Integer(), primary_key=True) + company_id = Column(Integer(), ForeignKey('companies.id')) + dev_id = Column(Integer(), ForeignKey('devs.id')) + item_name=Column(String()) + value=Column(Integer()) + + def print_details(self): + return f'{self.dev.name} owns a {self.item_name} from {self.company.name}' + + def __repr__(self): + return f'' + class Company(Base): __tablename__ = 'companies' @@ -16,14 +43,43 @@ class Company(Base): name = Column(String()) founding_year = Column(Integer()) + freebies = relationship('Freebie', backref='company') + devs = association_proxy('freebies', 'dev', + creator=lambda dv: Freebie(dev=dv)) + def give_freebie(self, dev, item_name, value): + #creates a new freebie instance associated with THIS company and the given dev + return Freebie(self.id, dev.id, item_name, value) + @classmethod + def oldest_company(cls): + oldest= session.query(cls).order_by(cls.founding_year).first() + return oldest def __repr__(self): return f'' + + + class Dev(Base): __tablename__ = 'devs' id = Column(Integer(), primary_key=True) name= Column(String()) + freebies = relationship('Freebie', backref='dev') + companies = association_proxy('freebies', 'company', + creator=lambda cm: Freebie(company=cm)) + + def received_one(self, item_name): + #if any freebies' item names are the item_name return True, else False + for freebie in self.freebies: + return freebie.item_name == item_name + + def give_away(self, dev, freebie): + #updates given freebie's dev to be the given dev iff freebie's current dev is the one that the method is being called on + if freebie.dev_id == self.id: + freebie.dev_id = dev.id + return freebie.dev_id def __repr__(self): return f'' + + diff --git a/lib/seed.py b/lib/seed.py index b16becbbb..457f04df0 100644 --- a/lib/seed.py +++ b/lib/seed.py @@ -1,3 +1,54 @@ #!/usr/bin/env python3 -# Script goes here! +from random import choice as rc + +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker +import random +from models import Company, Dev, Freebie + +engine = create_engine('sqlite:///freebies.db') +Session = sessionmaker(bind=engine) +session = Session() + + + +def delete_records(): + session.query(Company).delete() + session.query(Freebie).delete() + session.query(Dev).delete() + session.commit() + +def create_records(): + companies = [ + Company( + name= 'Bob', + founding_year = random.randint(1900, 2023) + ) for i in range(100)] + freebies = [ + Freebie( + company_id = random.randint(1,100), + dev_id = random.randint(1, 500), + item_name='item', + value=random.randint(0, 60), + ) for i in range(1000)] + devs = [ + Dev( + name= "Devonne" + ) for i in range(500)] + session.add_all(companies + freebies + devs) + session.commit() + return companies, freebies, devs + +def relate_records(companies, freebies, devs): + for freebie in freebies: + freebie.dev = rc(devs) + freebie.company = rc(companies) + + session.add_all(freebies) + session.commit() + +if __name__ == '__main__': + delete_records() + companies, freebies, devs = create_records() + relate_records(companies, freebies, devs) \ No newline at end of file