feat: 初始化SecScore项目基础结构

- 添加Electron + React + TypeScript基础框架
- 实现学生管理、积分流水、理由管理功能
- 添加主题切换和暗黑模式支持
- 配置数据库和WebSocket同步功能
- 完善项目文档和构建配置
This commit is contained in:
Fox_block
2026-01-13 20:19:57 +08:00
parent 4ddd4cbfb7
commit ae08ec45b0
44 changed files with 8638 additions and 2 deletions
+43
View File
@@ -0,0 +1,43 @@
import { Database } from 'better-sqlite3';
export interface Student {
id: number;
name: string;
score: number;
extra_json?: string;
}
export class StudentRepository {
constructor(private db: Database) {}
findAll() {
return this.db.prepare('SELECT * FROM students ORDER BY score DESC, name ASC').all() as Student[];
}
create(student: { name: string }) {
const info = this.db.prepare(
'INSERT INTO students (name) VALUES (?)'
).run(student.name);
return info.lastInsertRowid as number;
}
update(id: number, student: Partial<Student>) {
const sets: string[] = [];
const vals: any[] = [];
Object.entries(student).forEach(([key, val]) => {
if (key !== 'id') {
sets.push(`${key} = ?`);
vals.push(val);
}
});
vals.push(id);
this.db.prepare(`UPDATE students SET ${sets.join(', ')}, updated_at = CURRENT_TIMESTAMP WHERE id = ?`).run(...vals);
}
delete(id: number) {
this.db.transaction(() => {
this.db.prepare('DELETE FROM score_events WHERE student_id = ?').run(id);
this.db.prepare('DELETE FROM students WHERE id = ?').run(id);
})();
}
}