import SwiftData

@Model
final class User {
    let name: String
    let email: String

    init(name: String, email: String) {
        self.name = name
        self.email = email
    }
}

private func addUser() {
    withAnimation {
        let newItem = User(name: "John Wick", email: "info@icloud.com")
        modelContext.insert(newItem)
    }
}

private func deleteItems(offsets: IndexSet) {
    withAnimation {
        for index in offsets {
            modelContext.delete(users[index])
        }
    }
}
@Query private var users: [User]

// in the body property
List {
    ForEach(users) { user in
        VStack {
            Text(user.name)
                .font(.body)
                .frame(maxWidth: .infinity, alignment: .leading)
            Text(user.email)
                .font(.caption2)
                .frame(maxWidth: .infinity, alignment: .leading)
        }
    }
    .onDelete(perform: deleteItems)
}
// ContentView.swift
struct ContentView: View {
    @Environment(\.modelContext) private var modelContext
    @Query private var users: [User]

    var body: some View {
        NavigationView(content: {
            List {
                ForEach(users) { user in
                    VStack {
                        Text(user.name)
                            .font(.body)
                            .frame(maxWidth: .infinity, alignment: .leading)
                        Text(user.email)
                            .font(.caption2)
                            .frame(maxWidth: .infinity, alignment: .leading)
                    }
                }
                .onDelete(perform: deleteItems)
            }
            .toolbar {
                ToolbarItem(placement: .navigationBarTrailing) {
                    EditButton()
                }
                ToolbarItem {
                    Button(action: addUser) {
                        Label("Add User", systemImage: "plus")
                    }
                }
            }
        })
    }

    private func addUser() {
        withAnimation {
            let newItem = User(name: "John Wick", email: "info@icloud.com")
            modelContext.insert(newItem)
        }
    }

    private func deleteItems(offsets: IndexSet) {
        withAnimation {
            for index in offsets {
                modelContext.delete(users[index])
            }
        }
    }
}

//  SwiftData_WWDCApp.swift
@main
struct SwiftData_WWDCApp: App {

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .modelContainer(for: User.self)
    }
}