-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
124 lines (110 loc) · 3.75 KB
/
Copy pathapp.py
File metadata and controls
124 lines (110 loc) · 3.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
from flask_cors import CORS
from flask import Flask, jsonify, request
import sqlite3
app = Flask(__name__)
CORS(app)
def get_db():
conn = sqlite3.connect('users.db')
conn.row_factory = sqlite3.Row
return conn
def init_db():
conn = get_db()
conn.execute('DROP TABLE IF EXISTS users')
conn.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
major TEXT NOT NULL,
graduation_year INTEGER NOT NULL,
internship_status TEXT NOT NULL
email TEXT,
goals TEXT,
meeting_time TEXT
)
''')
conn.commit()
count = conn.execute('SELECT COUNT(*) FROM users').fetchone()[0]
if count == 0:
sample_users = [
('Matthew Fiakpornu', 'Computer Science', 2029, 'Seeking'),
('Jessica Williams', 'Electrical Engineering', 2027, 'Secured'),
('David Mensah', 'Computer Science', 2028, 'Seeking'),
('Aisha Johnson', 'Mathematics', 2027, 'Not Looking'),
('Carlos Rivera', 'Physics', 2029, 'Seeking'),
]
conn.executemany(
'INSERT INTO users (name, major, graduation_year, internship_status) VALUES (?, ?, ?, ?)',
sample_users
)
conn.commit()
conn.close()
@app.route('/')
def home():
return jsonify({"message": "Welcome to the ColorStack Member API"})
@app.route('/users', methods=['GET'])
def get_users():
conn = get_db()
users = conn.execute('SELECT * FROM users').fetchall()
conn.close()
return jsonify([dict(u) for u in users])
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
conn = get_db()
user = conn.execute('SELECT * FROM users WHERE id = ?', (user_id,)).fetchone()
conn.close()
if user is None:
return jsonify({"error": "User not found"}), 404
return jsonify(dict(user))
@app.route('/users', methods=['POST'])
def create_user():
data = request.get_json()
if not data:
return jsonify({"error": "No data provided"}), 400
conn = get_db()
conn.execute(
'INSERT INTO users (name, major, graduation_year, internship_status, email, goals, meeting_time) VALUES (?, ?, ?, ?, ?, ?, ?)',
(
data.get('name', ''),
data.get('major', ''),
data.get('graduation_year', 0),
data.get('internship_status', 'Seeking'),
data.get('email', ''),
data.get('goals', ''),
data.get('meeting_time', '')
)
)
conn.commit()
conn.close()
return jsonify({"message": "User created successfully"}), 201
@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
conn = get_db()
user = conn.execute('SELECT * FROM users WHERE id = ?', (user_id,)).fetchone()
if user is None:
conn.close()
return jsonify({"error": "User not found"}), 404
conn.execute('DELETE FROM users WHERE id = ?', (user_id,))
conn.commit()
conn.close()
return jsonify({"message": f"User {user_id} deleted successfully"}), 200
@app.route('/users/search', methods=['GET'])
def search_users():
major = request.args.get('major')
graduation_year = request.args.get('graduation_year')
conn = get_db()
query = 'SELECT * FROM users WHERE 1=1'
params = []
if major:
query += ' AND major = ?'
params.append(major)
if graduation_year:
query += ' AND graduation_year = ?'
params.append(graduation_year)
users = conn.execute(query, params).fetchall()
conn.close()
if not users:
return jsonify({"error": "No users found"}), 404
return jsonify([dict(u) for u in users])
if __name__ == '__main__':
init_db()
app.run(debug=True)