@startuml classes
skinparam classAttributeIconSize 0
skinparam style strictuml
package "class" as alias <<Frame>> {
    class LogEntry {
        + description: String [1]
        __
        <<create>>
        + LogEntry(description: string)
        <<destroy>>
        + delete()
    }

    class User {
        + email: String
        + password: String
        + nom: String
        + is_active: boolean
        __
        <<create>>
        + User(name: string, email: string, password: string)
        <<destroy>>
        + delete()

    }

    class Organisation {
        + name: String
        __
        <<create>>
        + Organisation(name: string)
        <<destroy>>
        + delete()
        + createItem(name: string, description: string): Item
        + ban(User: user): void
        + addUser(User: user): void
    }

    class Item {
        + name: String
        + description: String
        + slug: String {unique}
        + created: Datetime
        + modified: Datetime
        + /borrowed: boolean
        __
        <<create>>
        + Item(name: string, description: string)
        <<destroy>>
        + delete()
    }
    class Category {
        + name: string
        __
        <<create>>
        + Category(name: string)
        <<destroy>>
        + delete()
    }
    User "+users\n 0..*" -- "+organisations\n 0..*" Organisation
    User "+admins\n 0..*" - "+orgas_admin\n 0..*" Organisation: "     "
    User "+borrower\n 0..1" ---- "+item\n 0..*" Item

    Organisation "+organisation\n 1"  *--r-- "+categories\n 0..*" Category: "                                      "
    Item "+items\n 0..*" ----* "+organisation\n 1" Organisation
    Item "+items\n 0..*" --r--o "+category\n 0..1" Category

    Item "+item\n 0..1" --l-- "+logbook\n 0..*" LogEntry: "                           "
    User "+users\n 0..*" ---- "+logbook\n 0..*" LogEntry
}
@enduml
