1
- pub mod add_fn {
2
- #![ allow( warnings) ]
3
-
1
+ pub mod add_fn
2
+ {
4
3
// PACKAGES
5
4
use std:: fs;
6
5
use std:: io:: Write ;
7
- use std:: path:: Path ;
8
- use std:: error:: Error ;
9
-
10
- extern crate rusqlite;
11
- use rusqlite:: { params, Connection , Result , NO_PARAMS } ;
12
- // PACKAGES
13
-
14
- #[ derive( Debug ) ]
15
- struct FileStr {
16
- id : i64 ,
17
- file_path : String ,
18
- save_name : String ,
19
- saved_date : String ,
20
- saved_time : String
21
- }
22
-
23
- #[ derive( Debug ) ]
24
- struct DBStr {
25
- id : i64 ,
26
- save_name : String
27
- }
28
-
29
-
30
- // FUNC for UPDATE DATABASE - CLEAR DB and THEN INSERT NEW DB
31
- fn rewrite_db ( base : Vec < FileStr > ) -> Result < ( ) , Box < dyn Error > > {
32
- let conn = Connection :: open ( "rustix/storage.db3" ) ?;
33
- conn. execute ( "DROP TABLE IF EXISTS main" , NO_PARAMS ) ?;
34
-
35
- conn. execute ( "CREATE TABLE IF NOT EXISTS main (
36
- id INTEGER PRIMARY KEY,
37
- file_path TEXT NOT NULL, save_name TEXT UNIQUE,
38
- saved_date TEXT NOT NULL, saved_time TEXT NOT NULL)" , NO_PARAMS ,
39
- ) ?;
40
-
41
- for x in base {
42
- conn. execute ( "INSERT INTO main (
43
- id, file_path, save_name, saved_date, saved_time) VALUES (?1, ?2, ?3, ?4, ?5)" ,
44
- params ! [ x. id, x. file_path, x. save_name, x. saved_date, x. saved_time] ,
45
- ) ?;
46
- }
47
-
48
- conn. close ( ) ;
49
- Ok ( ( ) )
50
- }
51
-
52
-
53
- // FUNC for REWRITE ELEMENTS' ID and ADD NEW ELEMENT
54
- fn rewrite_id ( mut data : FileStr ) -> Result < Vec < FileStr > > {
55
- let conn = Connection :: open ( "rustix/storage.db3" ) ?;
56
- let mut stmt = conn. prepare ( "SELECT * FROM main" ) ?;
57
-
58
- let mut base = stmt. query_map ( NO_PARAMS , |row| {
59
- Ok ( FileStr {
60
- id : row. get ( 0 ) ?,
61
- file_path : row. get ( 1 ) ?, save_name : row. get ( 2 ) ?,
62
- saved_date : row. get ( 3 ) ?, saved_time : row. get ( 4 ) ?,
63
- } )
64
- } ) ?;
65
-
66
- let mut new_base: Vec < FileStr > = Vec :: new ( ) ;
67
- let mut new_id: i64 = 1 ;
68
- for one in base. into_iter ( ) { new_base. push ( one. unwrap ( ) ) ; }
69
-
70
- for e in new_base. iter_mut ( ) {
71
- e. id = new_id;
72
- new_id += 1 ;
73
- }
74
-
75
- data. id = new_id;
76
- new_base. push ( data) ;
77
-
78
- Ok ( new_base)
79
- }
80
6
81
7
82
8
// COPY FILE'S CONTENT and CREATE SAVE
83
- fn create_save ( unq_name : & String , file_path : & String ) {
9
+ fn create_save ( unq_name : & String , file_path : & String )
10
+ {
84
11
fn copy_file ( file_path : & String ) -> String { return fs:: read_to_string ( file_path) . expect ( "Should have been able to read the file" ) ; }
85
12
86
13
let file_name = format ! ( "rustix/saves/{:02}.txt" , unq_name) ;
@@ -93,42 +20,21 @@ pub mod add_fn {
93
20
94
21
95
22
// START POINT
96
- pub fn start ( file_path : & String , unq_name : & String ) {
23
+ pub fn start ( file_path : & String , unq_name : & String )
24
+ {
97
25
crate :: log:: logger:: start ( "ADD " . to_string ( ) ) ;
98
- let TIME_DATE : [ String ; 2 ] = crate :: time:: time_fn:: start ( ) ;
99
-
100
- fn check_unique_name ( unq : & String ) -> Result < bool , Box < dyn Error > >
101
- {
102
- let conn = Connection :: open ( "rustix/storage.db3" ) ?;
103
- let mut stmt = conn. prepare ( "SELECT id, save_name FROM main" ) ?;
104
- let mut base = stmt. query_map ( NO_PARAMS , |row| { Ok ( DBStr { id : row. get ( 0 ) ?, save_name : row. get ( 1 ) ?, } ) } ) ?;
105
-
106
- let mut x: bool = false ;
107
- for e in base. into_iter ( ) {
108
- if & e. unwrap ( ) . save_name == unq {
109
- println ! ( "Such a name already exists !" ) ;
110
- x = true ;
111
-
112
- break ;
113
- } else { continue ; }
114
- }
115
-
116
- Ok ( x)
117
- }
118
- if check_unique_name ( & unq_name) . unwrap ( ) == true { return ; }
119
26
27
+ let TIME_DATE : [ String ; 2 ] = crate :: time:: time_fn:: start ( ) ;
120
28
121
- let file_info = FileStr {
122
- id : 0 ,
123
- file_path : file_path. to_string ( ) ,
124
- save_name : unq_name. to_string ( ) ,
125
- saved_date : TIME_DATE [ 0 ] . to_string ( ) ,
126
- saved_time : TIME_DATE [ 1 ] . to_string ( )
127
- } ;
29
+ let save_info : [ String ; 4 ] = [
30
+ file_path. to_string ( ) ,
31
+ unq_name. to_string ( ) ,
32
+ TIME_DATE [ 0 ] . to_string ( ) ,
33
+ TIME_DATE [ 1 ] . to_string ( ) ] ;
128
34
129
- create_save ( & unq_name, & file_path) ;
130
- rewrite_db ( rewrite_id ( file_info) . unwrap ( ) ) ;
131
35
132
- println ! ( "Added !" ) ;
36
+ let CREATE_COPY = crate :: database:: add:: start ( save_info) ;
37
+ if ( CREATE_COPY == true ) { create_save ( & unq_name, & file_path) ; }
38
+ else { println ! ( ":(" ) ; }
133
39
}
134
40
}
0 commit comments