#pragma once

#include "api_mldb.h"

class MLDBAPI : public api_mldb
{
public:
	itemRecordW *GetFile(const wchar_t *filename);
	itemRecordW *GetFileIf(const wchar_t *filename, const wchar_t *query);
	itemRecordListW *GetAlbum(const wchar_t *albumname, const wchar_t *albumartist);
	itemRecordListW *Query(const wchar_t *query);
	itemRecordListW *QueryLimit(const wchar_t *query, unsigned int limit);

	void SetField(const wchar_t *filename, const char *field, const wchar_t *value);
	void SetFieldInteger(const wchar_t *filename, const char *field, int value);
	void SetFieldInt128(const wchar_t *filename, const char *field, uint8_t value[16]);
	void Sync();

	int AddFile(const wchar_t *filename);

	void FreeRecord(itemRecordW *record);
	void FreeRecordList(itemRecordListW *recordList);
	int RemoveFile(const wchar_t *filename);

	/* wrappers around ndestring */
	void RetainString(wchar_t *str);
	void ReleaseString(wchar_t *str);
	wchar_t *DuplicateString(const wchar_t *str);

		int GetMaxInteger(const char *field, int *max);
protected:
	RECVS_DISPATCH;
};