mirror of
https://github.com/autistic-symposium/web3-starter-py.git
synced 2025-05-20 07:30:22 -04:00
Add some private projects
This commit is contained in:
parent
c8cd5cdbc4
commit
07aa882d51
80 changed files with 5216 additions and 41 deletions
81
emotive.io/2.py
Normal file
81
emotive.io/2.py
Normal file
|
@ -0,0 +1,81 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
from pprint import pprint
|
||||
from pymongo import MongoClient
|
||||
|
||||
|
||||
class AWS_fail(object):
|
||||
def __init__(self):
|
||||
self.client = MongoClient('localhost', 27017)
|
||||
self.db = self.client.aws_fail
|
||||
|
||||
def print_collection(self):
|
||||
''' Print the entire items collection. Debug purposes.'''
|
||||
for item in self.db.items.find():
|
||||
pprint(item)
|
||||
|
||||
def item_exists(self, sku):
|
||||
''' Check whether a given sku entry exists in the collection.'''
|
||||
return self.db.items.find_one({'sku_number': sku})
|
||||
|
||||
def add_item_db(self, sku):
|
||||
''' Add a new sku to the collection or increment its value.'''
|
||||
if not self.item_exists(sku):
|
||||
self.db.items.insert_one({'sku_number': sku, 'quantity': 1})
|
||||
else:
|
||||
self.db.items.update_one({'sku_number': sku}, {'$inc': {'quantity': 1}})
|
||||
|
||||
def rm_item_db(self, sku):
|
||||
''' Remove a sku item from the database.'''
|
||||
if self.item_exists(sku):
|
||||
self.db.items.delete_one({'sku_number': sku})
|
||||
|
||||
def check_quantity_count(self, z):
|
||||
''' Check whether the sku item has the given z quantity.'''
|
||||
z_found = self.db.items.find_one({'quantity': int(z)})
|
||||
if z_found:
|
||||
pprint(1)
|
||||
else:
|
||||
pprint(0)
|
||||
|
||||
def cleanup(self):
|
||||
self.db.items.drop()
|
||||
|
||||
|
||||
def load_input(filename):
|
||||
''' Load input file with list of db operations.'''
|
||||
try:
|
||||
with open(filename) as f:
|
||||
input_data = f.readlines()
|
||||
return input_data[0], input_data[1:]
|
||||
except IOError:
|
||||
pprint('Could not read file: {}. Exiting.').format(f)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def run_operation(operation, aws_fail):
|
||||
''' Run the db operations for the given db collection.'''
|
||||
if operation[0] == '1':
|
||||
aws_fail.add_item_db(operation[1])
|
||||
elif operation[0] == '2':
|
||||
aws_fail.rm_item_db(operation[1])
|
||||
elif operation[0] == '3':
|
||||
aws_fail.check_quantity_count(operation[1])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
aws_fail = AWS_fail()
|
||||
|
||||
filename = 'input_for_2.txt'
|
||||
num_operations, operation_list = load_input(filename)
|
||||
|
||||
# We could use len(operation_list) here, but let's use the input info
|
||||
# because len() is not optimized for a large number of operations
|
||||
for i in range(int(num_operations)):
|
||||
operation = operation_list[i].strip('\n').split(',')
|
||||
run_operation(operation, aws_fail)
|
||||
|
||||
aws_fail.cleanup()
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue