package dst.ass1.doc.impl;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Indexes;
import dst.ass1.doc.IDocumentRepository;
import dst.ass1.jpa.model.IMaterial;
import dst.ass1.jpa.util.Constants;
import org.bson.Document;

import java.util.Map;

public class DocumentRepository implements IDocumentRepository {
    // FIXME: THIS IS WEIRD!!! WHY NO CONSTRUCTOR PARAMETER?!
    private MongoDatabase db = new MongoClient().getDatabase(Constants.MONGO_DB_NAME);

    @Override
    public void insert(IMaterial material, Map<String, Object> materialProperties) {
        MongoCollection<Document> coll = db.getCollection(Constants.COLL_MATERIAL_DATA);
        materialProperties.put(Constants.I_MATERIAL, material.getId());
        materialProperties.put(Constants.M_MATERIAL_TYPE, material.getType());
        coll.insertOne(new Document(materialProperties));
        coll.createIndex(Indexes.text(Constants.I_MATERIAL));
    }
}
