Repository navigation
Expand file tree
/
Copy pathschema.sql
More file actions
172 lines (159 loc) · 5.03 KB
/
Copy pathschema.sql
File metadata and controls
172 lines (159 loc) · 5.03 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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
-- schema.sql
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
password TEXT NOT NULL,
role TEXT NOT NULL, -- 'student', 'ngo', 'mentor', 'admin'
status TEXT DEFAULT 'pending', -- 'pending', 'approved', 'rejected'
is_verified BOOLEAN DEFAULT 0,
verification_token TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS ngos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
name TEXT NOT NULL,
registration_number TEXT,
address TEXT,
website TEXT,
description TEXT,
location TEXT,
certificate_path TEXT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS mentors (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
full_name TEXT NOT NULL,
linkedin_profile TEXT,
resume_path TEXT,
organization_college TEXT,
experience_years INTEGER,
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
date TEXT NOT NULL,
location TEXT,
ngo_id INTEGER NOT NULL,
FOREIGN KEY (ngo_id) REFERENCES ngos(id)
);
CREATE TABLE IF NOT EXISTS scholarships (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
eligibility TEXT,
deadline TEXT NOT NULL,
ngo_id INTEGER NOT NULL,
amount TEXT,
FOREIGN KEY (ngo_id) REFERENCES ngos(id)
);
CREATE TABLE IF NOT EXISTS mentor_posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
mentor_id INTEGER NOT NULL,
title TEXT NOT NULL,
content TEXT,
tags TEXT,
resource_url TEXT,
FOREIGN KEY (mentor_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS notifications (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
message TEXT NOT NULL,
read BOOLEAN DEFAULT 0,
type TEXT DEFAULT 'info',
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS applications (
id INTEGER PRIMARY KEY AUTOINCREMENT,
scholarship_id INTEGER NOT NULL,
student_id INTEGER NOT NULL,
status TEXT DEFAULT 'pending', -- 'pending', 'approved', 'rejected'
applied_at TEXT DEFAULT CURRENT_TIMESTAMP,
applicant_name TEXT,
applicant_email TEXT,
applicant_phone TEXT,
applicant_education TEXT,
applicant_gpa TEXT,
applicant_sop TEXT,
FOREIGN KEY (scholarship_id) REFERENCES scholarships(id),
FOREIGN KEY (student_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS event_registrations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_id INTEGER NOT NULL,
student_id INTEGER NOT NULL,
student_name TEXT,
student_email TEXT,
registered_at TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (event_id) REFERENCES events(id),
FOREIGN KEY (student_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS announcements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
content TEXT,
ngo_id INTEGER NOT NULL,
ngo_name TEXT,
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (ngo_id) REFERENCES ngos(id)
);
CREATE TABLE IF NOT EXISTS book_donations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
book_title TEXT NOT NULL,
subject TEXT,
condition TEXT,
location TEXT,
donor_id INTEGER NOT NULL,
donor_name TEXT,
ngo_id INTEGER NOT NULL,
ngo_name TEXT,
status TEXT DEFAULT 'pending', -- 'pending', 'accepted', 'rejected'
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (donor_id) REFERENCES users(id),
FOREIGN KEY (ngo_id) REFERENCES ngos(id)
);
CREATE TABLE IF NOT EXISTS library_books (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
subject TEXT,
condition TEXT,
ngo_id INTEGER NOT NULL,
donor_id INTEGER,
donor_name TEXT,
donation_id INTEGER,
status TEXT DEFAULT 'available', -- 'available', 'borrowed', 'requested'
added_at TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (ngo_id) REFERENCES ngos(id),
FOREIGN KEY (donor_id) REFERENCES users(id),
FOREIGN KEY (donation_id) REFERENCES book_donations(id)
);
CREATE TABLE IF NOT EXISTS borrow_requests (
id INTEGER PRIMARY KEY AUTOINCREMENT,
book_id INTEGER NOT NULL,
book_title TEXT,
student_id INTEGER NOT NULL,
student_name TEXT,
student_email TEXT,
ngo_id INTEGER NOT NULL,
status TEXT DEFAULT 'pending', -- 'pending', 'approved', 'rejected', 'returned'
requested_at TEXT DEFAULT CURRENT_TIMESTAMP,
borrowed_at TEXT,
returned_at TEXT,
FOREIGN KEY (book_id) REFERENCES library_books(id),
FOREIGN KEY (student_id) REFERENCES users(id),
FOREIGN KEY (ngo_id) REFERENCES ngos(id)
);
CREATE TABLE IF NOT EXISTS student_activity_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id INTEGER NOT NULL,
action TEXT NOT NULL,
details TEXT,
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (student_id) REFERENCES users(id)
);