Add mo sql and models
This commit is contained in:
258
aula/models.py
Normal file
258
aula/models.py
Normal file
@ -0,0 +1,258 @@
|
||||
# write all your SQL queries in this file.
|
||||
from datetime import datetime
|
||||
from bank import conn, login_manager
|
||||
from flask_login import UserMixin
|
||||
from psycopg2 import sql
|
||||
|
||||
@login_manager.user_loader
|
||||
def load_user(user_id):
|
||||
cur = conn.cursor()
|
||||
|
||||
schema = 'customers'
|
||||
id = 'cpr_number'
|
||||
if str(user_id).startswith('60'):
|
||||
schema = 'employees'
|
||||
id = 'id'
|
||||
|
||||
user_sql = sql.SQL("""
|
||||
SELECT * FROM {}
|
||||
WHERE {} = %s
|
||||
""").format(sql.Identifier(schema), sql.Identifier(id))
|
||||
|
||||
cur.execute(user_sql, (int(user_id),))
|
||||
if cur.rowcount > 0:
|
||||
# return-if svarer til nedenstående:
|
||||
# if schema == 'employees':
|
||||
# return Employees(cur.fetchone())
|
||||
# else:
|
||||
# return Customers(cur.fetchone())
|
||||
|
||||
return Employees(cur.fetchone()) if schema == 'employees' else Customers(cur.fetchone())
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
class Group(tuple):
|
||||
def __init__(self, group_data):
|
||||
self.group_id = group_data[0]
|
||||
self.name = group_data[1]
|
||||
self.leaveable = group_data[2]
|
||||
self.parents_can_post = group_data[3]
|
||||
|
||||
class Message(tuple):
|
||||
def __init__(self, message_data):
|
||||
self.message_id = message_data[0]
|
||||
self.content = message_data[1]
|
||||
self.thread_id = message_data[2]
|
||||
self.author_id = message_data[3]
|
||||
self.created_date = message_data[4]
|
||||
|
||||
class Post(tuple):
|
||||
def __init__(self, post_data):
|
||||
self.post_id = message_data[0]
|
||||
self.group_id = message_data[1]
|
||||
self.author_id = message_data[2]
|
||||
self.title = message_data[3]
|
||||
self.content = message_data[4]
|
||||
self.created_date = message_data[5]
|
||||
|
||||
class Thread(tuple):
|
||||
def __init__(self, thread_data):
|
||||
self.thread_id = message_data[0]
|
||||
self.title = message_data[1]
|
||||
self.group_id = message_data[2]
|
||||
self.creator_id = message_data[3]
|
||||
|
||||
class User(tuple, UserMixin):
|
||||
def __init__(self, user_data):
|
||||
self.user_id = user_data[0]
|
||||
self.first_name = user_data[1]
|
||||
self.last_name = user_data[2]
|
||||
self.password = user_data[3]
|
||||
self.email = user_data[4]
|
||||
self.address = user_data[5]
|
||||
self.role = user_data[6]
|
||||
|
||||
|
||||
|
||||
|
||||
class Customers(tuple, UserMixin):
|
||||
def __init__(self, user_data):
|
||||
self.CPR_number = user_data[0]
|
||||
self.risktype = False
|
||||
self.password = user_data[2]
|
||||
self.name = user_data[3]
|
||||
self.address = user_data[4]
|
||||
|
||||
def get_id(self):
|
||||
return (self.CPR_number)
|
||||
|
||||
class Employees(tuple, UserMixin):
|
||||
def __init__(self, employee_data):
|
||||
self.id = employee_data[0]
|
||||
self.name = employee_data[1]
|
||||
self.password = employee_data[2]
|
||||
|
||||
def get_id(self):
|
||||
return (self.id)
|
||||
|
||||
class CheckingAccount(tuple):
|
||||
def __init__(self, user_data):
|
||||
self.id = user_data[0]
|
||||
self.create_date = user_data[1]
|
||||
self.CPR_number = user_data[2]
|
||||
self.amount = 0
|
||||
|
||||
class InvestmentAccount(tuple):
|
||||
def __init__(self, user_data):
|
||||
self.id = user_data[0]
|
||||
self.start_date = user_data[1]
|
||||
self.maturity_date = user_data[2]
|
||||
self.amount = 0
|
||||
|
||||
class Transfers(tuple):
|
||||
def __init__(self, user_data):
|
||||
self.id = user_data[0]
|
||||
self.amount = user_data[1]
|
||||
self.transfer_date = user_data[2]
|
||||
|
||||
def insert_Customers(name, CPR_number, password):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
INSERT INTO Customers(name, CPR_number, password)
|
||||
VALUES (%s, %s, %s)
|
||||
"""
|
||||
cur.execute(sql, (name, CPR_number, password))
|
||||
# Husk commit() for INSERT og UPDATE, men ikke til SELECT!
|
||||
conn.commit()
|
||||
cur.close()
|
||||
|
||||
def insert_Employees(id, name, password):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
INSERT INTO Employees(id, name, password)
|
||||
VALUES (%s, %s, %s)
|
||||
"""
|
||||
cur.execute(sql, (id, name, password))
|
||||
# Husk commit() for INSERT og UPDATE, men ikke til SELECT!
|
||||
conn.commit()
|
||||
cur.close()
|
||||
|
||||
def select_Customers(CPR_number):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
SELECT * FROM Customers
|
||||
WHERE CPR_number = %s
|
||||
"""
|
||||
cur.execute(sql, (CPR_number,))
|
||||
user = Customers(cur.fetchone()) if cur.rowcount > 0 else None;
|
||||
cur.close()
|
||||
return user
|
||||
|
||||
def select_Employees(id):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
SELECT * FROM Employees
|
||||
WHERE id = %s
|
||||
"""
|
||||
cur.execute(sql, (id,))
|
||||
user = Employees(cur.fetchone()) if cur.rowcount > 0 else None;
|
||||
cur.close()
|
||||
return user
|
||||
|
||||
def select_all_Employees():
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
SELECT * FROM Employees
|
||||
"""
|
||||
cur.execute(sql)
|
||||
tuple_resultset = cur.fetchall()
|
||||
cur.close()
|
||||
return tuple_resultset
|
||||
|
||||
def update_CheckingAccount(amount, CPR_number):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
UPDATE CheckingAccount
|
||||
SET amount = %s
|
||||
WHERE CPR_number = %s
|
||||
"""
|
||||
cur.execute(sql, (amount, CPR_number))
|
||||
# Husk commit() for INSERT og UPDATE, men ikke til SELECT!
|
||||
conn.commit()
|
||||
cur.close()
|
||||
|
||||
def transfer_account(date, amount, from_account, to_account):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
INSERT INTO Transfers(transfer_date, amount, from_account, to_account)
|
||||
VALUES (%s, %s, %s, %s)
|
||||
"""
|
||||
cur.execute(sql, (date, amount, from_account, to_account))
|
||||
# Husk commit() for INSERT og UPDATE, men ikke til SELECT!
|
||||
conn.commit()
|
||||
cur.close()
|
||||
|
||||
def select_emp_cus_accounts(emp_cpr_number):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
SELECT
|
||||
e.name employee
|
||||
, c.name customer
|
||||
, cpr_number
|
||||
, account_number
|
||||
FROM manages m
|
||||
NATURAL JOIN accounts
|
||||
NATURAL JOIN customers c
|
||||
JOIN employees e ON m.emp_cpr_number = e.id
|
||||
WHERE emp_cpr_number = %s
|
||||
;
|
||||
"""
|
||||
cur.execute(sql, (emp_cpr_number,))
|
||||
tuple_resultset = cur.fetchall()
|
||||
cur.close()
|
||||
return tuple_resultset
|
||||
|
||||
def select_investments(emp_cpr_number):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
SELECT i.account_number, a.cpr_number, a.created_date
|
||||
FROM investmentaccounts i
|
||||
JOIN accounts a ON i.account_number = a.account_number
|
||||
JOIN manages m ON m.account_number = a.account_number
|
||||
JOIN employees e ON e.id = m.emp_cpr_number
|
||||
WHERE e.id = %s
|
||||
"""
|
||||
cur.execute(sql, (emp_cpr_number,))
|
||||
tuple_resultset = cur.fetchall()
|
||||
cur.close()
|
||||
return tuple_resultset
|
||||
|
||||
def select_investments_with_certificates(emp_cpr_number):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
SELECT i.account_number, a.cpr_number, a.created_date
|
||||
, cd.cd_number, start_date, maturity_date, rate, amount
|
||||
FROM investmentaccounts i
|
||||
JOIN accounts a ON i.account_number = a.account_number
|
||||
JOIN certificates_of_deposit cd ON i.account_number = cd.account_number
|
||||
JOIN manages m ON m.account_number = a.account_number
|
||||
JOIN employees e ON e.id = m.emp_cpr_number
|
||||
WHERE e.id = %s
|
||||
"""
|
||||
cur.execute(sql, (emp_cpr_number,))
|
||||
tuple_resultset = cur.fetchall()
|
||||
cur.close()
|
||||
return tuple_resultset
|
||||
|
||||
def select_investments_certificates_sum(emp_cpr_number):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
SELECT account_number, cpr_number, created_date, sum
|
||||
FROM vw_cd_sum
|
||||
WHERE emp_cpr_number = %s
|
||||
"""
|
||||
cur.execute(sql, (emp_cpr_number,))
|
||||
tuple_resultset = cur.fetchall()
|
||||
cur.close()
|
||||
return tuple_resultset
|
8
aula/schema_drop.sql
Normal file
8
aula/schema_drop.sql
Normal file
@ -0,0 +1,8 @@
|
||||
DROP TABLE IF EXISTS users;
|
||||
DROP TABLE IF EXISTS groups;
|
||||
DROP TABLE IF EXISTS threads;
|
||||
DROP TABLE IF EXISTS messages;
|
||||
DROP TABLE IF EXISTS posts;
|
||||
DROP TABLE IF EXISTS users_threads;
|
||||
DROP TABLE IF EXISTS users_groups;
|
||||
|
14
aula/schema_ins.sql
Normal file
14
aula/schema_ins.sql
Normal file
@ -0,0 +1,14 @@
|
||||
DELETE FROM users;
|
||||
DELETE FROM groups;
|
||||
DELETE FROM messages;
|
||||
DELETE FROM threads;
|
||||
DELETE FROM posts;
|
||||
DELETE FROM users_threads;
|
||||
DELETE FROM users_groups;
|
||||
|
||||
INSERT INTO public.users(first_name, last_name, password, email, adresse, role) VALUES (Gordon, Freeman, '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'test@test.dk', 'aud Auditorium A, bygning 1, 1. sal Universitetsparken 15 (Zoo)', 'teacher');
|
||||
INSERT INTO public.users(first_name, last_name, password, email, adresse, role) VALUES (Rachel, Green, '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'rachel@test.dk', 'Cnetral Park', 'parent');
|
||||
INSERT INTO public.users(first_name, last_name, password, email, adresse, role) VALUES (Joey, Trib, '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'joey@test.dk', 'New York', 'student');
|
||||
INSERT INTO public.users(first_name, last_name, password, email, adresse, role) VALUES (Chandler, Bing, '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'Chandler@test.dk', 'Central Park', 'student');
|
||||
INSERT INTO public.users(first_name, last_name, password, email, adresse, role) VALUES (Phoebe, Buffay, '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'Phoebe@test.dk', 'Central Perk', 'parent');
|
||||
INSERT INTO public.users(first_name, last_name, password, email, adresse, role) VALUES (Ross, Geller, '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'Ross@test.dk', 'Central Perk', 'student');
|
Reference in New Issue
Block a user