# DB Class
The DB class represents a simple database that stores its data as files in a directory. It is a key-value store, where keys are filenames and values are file contents. The DB class is defined in the `gpt_engineer/db.py` file.
### DB Class
Methods and how they are being used:
`__init__(self, path)`: The constructor takes a path as an argument and creates a directory at that path if it does not already exist.
`__contains__(self, key)`: This method checks if a key (filename) exists in the database. It returns True if the file exists and False otherwise.
`__getitem__(self, key)`: This method gets the value (file content) associated with a key (filename). It raises a `KeyError` if the key does not exist in the database.
`__setitem__(self, key, val)`: This method sets the value (file content) associated with a key (filename). It creates the file if it does not already exist. The value must be either a string or bytes.
### DBs Class
The DBs class is a dataclass that contains instances of the DB class for different types of data:
Each instance of the DBs class contains five databases currently:
`memory`: This database is used to store the AI's memory.
`logs`: This database is used to store logs of the AI's actions.
`preprompts`: This database is used to store preprompts that guide the AI's actions.
`input`: This database is used to store the user's input.
`workspace`: This database is used to store the AI's workspace, which includes the code it generates.
## Conclusion
The DB and DBs classes provide a simple and flexible way to manage data in the GPT-Engineer system. They allow the system to store and retrieve data as files in a directory, which makes it easy to inspect and modify the data.