@Inject
public CassandraMessageDAO(Session session, CassandraTypesProvider typesProvider, BlobStore blobStore,
BlobId.Factory blobIdFactory, CassandraConfiguration cassandraConfiguration,
CassandraUtils cassandraUtils, CassandraMessageId.Factory messageIdFactory) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.typesProvider = typesProvider;
this.blobStore = blobStore;
this.blobIdFactory = blobIdFactory;
this.configuration = cassandraConfiguration;
this.cassandraUtils = cassandraUtils;
this.messageIdFactory = messageIdFactory;
this.insert = prepareInsert(session);
this.delete = prepareDelete(session);
this.selectMetadata = prepareSelect(session, METADATA);
this.selectHeaders = prepareSelect(session, HEADERS);
this.selectFields = prepareSelect(session, FIELDS);
this.selectBody = prepareSelect(session, BODY);
this.selectAllMessagesWithAttachment = prepareSelectAllMessagesWithAttachment(session);
this.cidParser = Cid.parser().relaxed();
}