vapor / fluent-sqlite-driver

Fluent driver for SQLite
MIT License
68 stars 24 forks source link

Saving multiple records results in duplicate 'id's #30

Closed davidmuzi closed 12 months ago

davidmuzi commented 5 years ago

Bug

Saving multiple records within a loop returns objects with duplicate ids

Expected Result

Records should have unique ids

Steps to reproduce

Using the 'Todo' class from the Vapor template, add:

    func test(_ req: Request) throws -> Future<[Todo]> {
        var todos = [Future<Todo>]()
        for i in 1...5 {
            let todo = Todo(title: "item \(i)")
            todos.append(todo.save(on: req).map {
                print("todo: \($0.id!), title: \($0.title)")
                return $0
            })
        }
        return todos.flatten(on: req)
    }

With the in-memory db, the printout yields:

todo: 2, title: item 1
todo: 3, title: item 2
todo: 4, title: item 3
todo: 5, title: item 4
todo: 5, title: item 5

Notice 2 records have the id 5.

With a sqlite db, the console printout is the same, but, peeking in the sqlite.db itself shows that the records do indeed have unique ids.

"id","title"
1,"item 1"
2,"item 2"
3,"item 3"
4,"item 4"
5,"item 5"
davidmuzi commented 5 years ago

This issue does not happen with FluentMySQL nor FluentPosgreSQL

podratz commented 5 years ago

Still occurring. Did you find a fix for it?

gwynne commented 12 months ago

Closing due to extreme age