이번에는 관리자 화면의 코드를 자세히 살펴보겠습니다. 이 코드는 Flutter로 작성되었으며, 관리자가 애플리케이션의 도서 정보를 업데이트하고 카테고리를 관리하는 화면을 구성합니다.
이 화면은 애플리케이션의 관리자 기능을 제공합니다. 여기에서는 Kakao API
와 Aladin API
, Firestore
를 사용하여 도서 정보를 업데이트하고 카테고리를 분류할 수 있습니다.
아래 코드는 알라딘 업데이트
버튼을 클릭했을 때 동작하는 코드입니다. Aladin API
를 사용하여 도서 정보를 가져와 Firestore
에 저장합니다. 사용자가 해당 기능을 선택하면 Firestore
에서 JinJoongBookList
collection의 모든 도서 목록을 가져와 각 도서의 정보를 Firestore의 AladinBooks
collection에 저장합니다.
onTap: () async {
// Firestore에서 도서 목록을 가져옵니다.
QuerySnapshot<Map<String, dynamic>> querySnapshot =
await FirebaseFirestore.instance
.collection('JinJoongBookList')
.get();
// 도서 목록을 분기별로 저장합니다.
Map<String, Map<String, dynamic>> quarterlyBookList = {};
querySnapshot.docs.forEach((doc) {
String quarter = doc.id;
quarterlyBookList[quarter] = doc.data();
});
// 분기별 도서 목록을 순회하며 각 도서 정보를 업데이트합니다.
for (String year in quarterlyBookList.keys) {
for (String qt in quarterlyBookList[year]!.keys) {
List<dynamic> qtBooks = quarterlyBookList[year]![qt];
try {
// Kakao API를 사용하여 도서 정보를 업데이트합니다.
await getAladinBookData(qtBooks);
} catch (e) {
print("Kakao API Error in $qtBooks");
}
}
}
},
도서 아래 코드는 카카오 업데이트
버튼을 클릭했을 때 동작하는 코드입니다. Kakao API
를 사용하여 도서 정보를 가져와 Firestore
에 저장합니다. 사용자가 해당 기능을 선택하면 Firestore
에서 JinJoongBookList
collection의 모든 도서 목록을 가져와 각 도서의 정보를 Firestore의 bookInfos
collection에 저장합니다.
onTap: () async {
// Firestore에서 도서 목록을 가져옵니다.
QuerySnapshot<Map<String, dynamic>> querySnapshot =
await FirebaseFirestore.instance
.collection('JinJoongBookList')
.get();
// 도서 목록을 분기별로 저장합니다.
Map<String, Map<String, dynamic>> quarterlyBookList = {};
querySnapshot.docs.forEach((doc) {
String quarter = doc.id;
quarterlyBookList[quarter] = doc.data();
});
// 분기별 도서 목록을 순회하며 각 도서 정보를 업데이트합니다.
for (String year in quarterlyBookList.keys) {
for (String qt in quarterlyBookList[year]!.keys) {
List<dynamic> qtBooks = quarterlyBookList[year]![qt];
try {
// Kakao API를 사용하여 도서 정보를 업데이트합니다.
await getBookData(qtBooks);
} catch (e) {
print("Kakao API Error in $qtBooks");
}
}
}
},
카테고리 분류 기능은 Firestore에 저장된 도서 정보를 기반으로 도서를 카테고리에 따라 분류합니다. 사용자가 해당 기능을 선택하면 Firestore
에서 JinJoongBookList
collection의 모든 도서 목록을 가져와 각 도서의 정보를 Firestore의 category
collection에 저장합니다.
onTap: () async {
// Firestore에서 도서 목록을 가져옵니다.
QuerySnapshot<Map<String, dynamic>> querySnapshot =
await FirebaseFirestore.instance
.collection('JinJoongBookList')
.get();
// 도서 목록을 분기별로 저장합니다.
Map<String, Map<String, dynamic>> quarterlyBookList = {};
querySnapshot.docs.forEach((doc) {
String quarter = doc.id;
quarterlyBookList[quarter] = doc.data();
});
// 분기별 도서 목록을 순회하며 각 도서의 카테고리를 분류합니다.
for (String year in quarterlyBookList.keys) {
for (String qt in quarterlyBookList[year]!.keys) {
List<dynamic> qtBooks = quarterlyBookList[year]![qt];
// 각 도서의 카테고리를 분류합니다.
for (var element in qtBooks) {
DocumentSnapshot<Map<String, dynamic>> docSnapshot = await FirebaseFirestore
.instance
.collection('aladinBooks')
.doc(element)
.get();
// 도서의 카테고리 정보를 가져옵니다.
String? category = docSnapshot.data()?["categoryName"];
if (category != null) {
// 카테고리 정보를 가공하여 Firestore의 'category' 컬렉션에 저장합니다.
// ...
}
}
}
}
},
이와 같이 관리자 화면은 애플리케이션의 도서 정보를 관리하고 업데이트하는 중요한 역할을 합니다. 관리자는 이 화면을 통해 도서 정보를 최신 상태로 유지하고 카테고리를 체계적으로 관리할 수 있습니다.