· 6 years ago · Aug 30, 2019, 04:54 AM
1import { openDatabase, enablePromise } from "react-native-sqlite-storage";
2
3export class SiswaDatasource {
4 _executeSql(sql, params = undefined) {
5 enablePromise(true)
6
7 return new Promise((resolve, reject) => {
8 openDatabase({
9 name: 'sekolahku.db',
10 location: 'default'
11 }).then((db) => {
12 let prepareTable = "CREATE TABLE IF NOT EXISTS siswa(" +
13 "id INTEGER PRIMARY KEY AUTOINCREMENT, " +
14 "nama_depan TEXT, " +
15 "nama_belakang TEXT, " +
16 "no_hp TEXT, " +
17 "email TEXT, " +
18 "tgl_lahir TEXT, " +
19 "gender TEXT, " +
20 "jenjang TEXT, " +
21 "hobi TEXT, " +
22 "alamat TEXT)"
23 db.executeSql(prepareTable).then(() => {
24 db.executeSql(sql, params).then((result) => {
25 resolve(result)
26 console.log("Hasil Query: " + JSON.stringify(result));
27 }).catch(error => reject(error))
28 }).catch(error => reject(error))
29 }).catch((onRejected) => {
30 reject(onRejected)
31 })
32 })
33 }
34
35 save(siswa) {
36 let sql = "INSERT INTO siswa(nama_depan, nama_belakang, no_hp, email, " +
37 "tgl_lahir, gender, jenjang, hobi, alamat) " +
38 "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"
39 let params = [
40 siswa.firstName, siswa.lastName,
41 siswa.phoneNumber, siswa.email, siswa.birthDate, siswa.gender,
42 siswa.education, siswa.hobies, siswa.address
43 ]
44
45 return this._executeSql(sql, params)
46 }
47
48 findAll() {
49 let sql = "SELECT *FROM siswa"
50 let self = this
51
52 return new Promise((resolve, reject) => {
53 self._executeSql(sql).then((result) => {
54 let dataset = result[0].rows
55 let siswaList = []
56
57 for (let index = 0; index < dataset.length; index++) {
58 const data = dataset.item(index);
59 let siswa = new Student()
60 siswa.id = data.id
61 siswa.firstName = data.nama_depan
62 siswa.lastName = data.nama_belakang
63 siswa.phoneNumber = data.no_hp
64 siswa.email = data.email
65 siswa.birthDate = data.tgl_lahir
66 siswa.gender = data.gender
67 siswa.education = data.jenjang
68 siswa.hobies = data.hobi
69 siswa.address = data.alamat
70
71 siswaList.push(siswa)
72 }
73
74 resolve(siswaList)
75 })
76 })
77 }
78
79 delete(siswa) {
80 let sql = "DELETE FROM siswa WHERE id=?"
81 return this.execute(sql, [siswa.id])
82 }
83
84 update(siswa) {
85 let sql = "UPDATE siswa SET " +
86 "nama_depan=?, " +
87 "nama_belakang=?, " +
88 "no_hp=?, " +
89 "email=?, " +
90 "tgl_lahir=?, " +
91 "gender=?, " +
92 "jenjang=?, " +
93 "hobi=?, " +
94 "alamat=? " +
95 "WHERE id=?"
96 let params = [
97 siswa.firstName, siswa.lastName,
98 siswa.phoneNumber, siswa.email, siswa.birthDate, siswa.gender,
99 siswa.education, siswa.hobies, siswa.address,
100 siswa.id
101 ]
102
103 return this.execute(sql, params)
104 }
105
106 findByName(nama) {
107 let sql = "SELECT *FROM siswa WHERE nama_depan LIKE ? OR nama_belakang LIKE ?"
108 let self = this
109
110 return new Promise(function (resolve, reject) {
111 let siswaList = []
112 let params = ["%" + nama + "%", "%" + nama + "%"]
113
114 self._executeSql(sql, params).then((result) => {
115 for (let index = 0; index < result[0].rows.length; index++) {
116 const data = result[0].rows.item(index);
117 let siswa = new Student()
118 siswa.id = data.id
119 siswa.firstName = data.nama_depan
120 siswa.lastName = data.nama_belakang
121 siswa.phoneNumber = data.no_hp
122 siswa.email = data.email
123 siswa.birthDate = data.tgl_lahir
124 siswa.gender = data.gender
125 siswa.education = data.jenjang
126 siswa.hobies = data.hobi
127 siswa.address = data.alamat
128
129 siswaList.push(siswa)
130 }
131
132 resolve(siswaList)
133 })
134 })
135 }
136
137 findById(id) {
138 let sql = "SELECT *FROM siswa WHERE id=?"
139 let self = this
140
141 return new Promise(function (resolve, reject) {
142 let params = [id]
143 self._executeSql(sql, params).then((result) => {
144 const totalData = result[0].rows.length;
145 if (totalData > 0) {
146 let data = result[0].rows.item(0)
147 let siswa = new Student()
148 siswa.id = data.id
149 siswa.firstName = data.nama_depan
150 siswa.lastName = data.nama_belakang
151 siswa.phoneNumber = data.no_hp
152 siswa.email = data.email
153 siswa.birthDate = data.tgl_lahir
154 siswa.gender = data.gender
155 siswa.education = data.jenjang
156 siswa.hobies = data.hobi
157 siswa.address = data.alamat
158 resolve(siswa)
159 } else {
160 throw new Error("No student data with id : " + id)
161 }
162 })
163 })
164 }
165}