please see my firestore structure
I want to set my document title as sequential. my structure as [Table] - Drinks - ["Drink (sequence)"] my first issues : my document title does follow sequence, like "Drink 1" and "Drink 2" etc however when I add new drinks to Another Table - the new document starting from Drink 3 rather than drink 1.
my second issues : if there were "drink 1" and "drink 2 documents", if I delete them then recreate the document title start from drink 2. I don't know what's wrong please help me .
my codes for doing this is
var drinkCount : Int = 1
func generateDrinkTitle(table: String,complete:@escaping() -> Void) {
let docRef = db.collection("Active Table").document(table).collection("Drinks")
docRef.getDocuments { querySnapshot, error in
if let err = error {
print("Error in getting: \(err.localizedDescription)")
} else {
self.drinkCount = 1
for doc in querySnapshot!.documents {
self.drinkCount += 1
}
}
}
complete()
}
my whole code
class OrderViewModel : ObservableObject {
var drinkCount : Int = 1
func saveDrinks(table : String) {
var drinks : [[String : Any]] = []
var drinkextra : [[String: Any]] = []
for j in cartDrinks {
for i in j.extra {
drinkextra.append(["extra": i.extra,"price": i.price])
drinks.append(["Name":j.name,
"Unit":j.unit ,
"Price":j.price,
"Extra": drinkextra
])
drinkextra.removeAll()
}
}
db.collection("Active Table").document("Table \(table)").collection("Drinks").document("Drink \(self.drinkCount)").setData(["Drinks": drinks]){ error in
if let error = error {
print(error.localizedDescription)
} else {
}
}
}
func generateDrinkTitle(table: String,complete:@escaping() -> Void) {
let docRef = db.collection("Active Table").document(table).collection("Drinks")
docRef.getDocuments { querySnapshot, error in
if let err = error {
print("Error in getting: \(err.localizedDescription)")
} else {
self.drinkCount = 1
for doc in querySnapshot!.documents {
self.drinkCount += 1
}
}
}
complete()
}
func FireUpload(table: String){
db.collection("Active Table").document("Table \(table)").setData(["Time" : Timestamp(date: Date())]) { error in
if let error = error {
print(error.localizedDescription)
return
}
}
if !mealDeal.mainCourse.isEmpty {
self.SaveMealDeal(table: table)
}
if !cartDrinks.isEmpty {
generateDrinkTitle(table: "Table \(table)") {
self.saveDrinks(table: table)
self.drinkCount = 1
}
}
if !cartexpress.isEmpty {
self.SaveAlacarte(table: table)
}
}
}