package io.cattle.platform.docker.process.dao.impl;
import static io.cattle.platform.core.model.tables.StackTable.*;
import static io.cattle.platform.core.model.tables.ServiceTable.*;
import io.cattle.platform.core.constants.CommonStatesConstants;
import io.cattle.platform.core.model.Stack;
import io.cattle.platform.core.model.Service;
import io.cattle.platform.core.model.tables.records.ServiceRecord;
import io.cattle.platform.db.jooq.dao.impl.AbstractJooqDao;
import io.cattle.platform.docker.process.dao.ComposeDao;
import io.cattle.platform.docker.process.util.DockerConstants;
import io.cattle.platform.object.ObjectManager;
import io.cattle.platform.object.meta.ObjectMetaDataManager;
import io.github.ibuildthecloud.gdapi.condition.Condition;
import io.github.ibuildthecloud.gdapi.condition.ConditionType;
import java.util.List;
import javax.inject.Inject;
public class ComposeDaoImpl extends AbstractJooqDao implements ComposeDao {
@Inject
ObjectManager objectManager;
@Override
public Stack getComposeProjectByName(long accountId, String name) {
return objectManager.findAny(Stack.class,
ObjectMetaDataManager.NAME_FIELD, name,
ObjectMetaDataManager.ACCOUNT_FIELD, accountId,
ObjectMetaDataManager.REMOVED_FIELD, null,
ObjectMetaDataManager.STATE_FIELD, new Condition(ConditionType.NE, CommonStatesConstants.REMOVING),
ObjectMetaDataManager.KIND_FIELD, DockerConstants.TYPE_COMPOSE_PROJECT);
}
@Override
public Service getComposeServiceByName(long accountId, String name, String projectName) {
List<? extends Service> services = create().select(SERVICE.fields())
.from(SERVICE)
.join(STACK)
.on(STACK.ID.eq(SERVICE.STACK_ID))
.where(SERVICE.ACCOUNT_ID.eq(accountId)
.and(SERVICE.NAME.eq(name))
.and(SERVICE.REMOVED.isNull())
.and(SERVICE.STATE.ne(CommonStatesConstants.REMOVING))
.and(SERVICE.KIND.eq(DockerConstants.TYPE_COMPOSE_SERVICE))
.and(STACK.NAME.eq(projectName))
.and(STACK.KIND.eq(DockerConstants.TYPE_COMPOSE_PROJECT))
.and(STACK.REMOVED.isNull())).fetchInto(ServiceRecord.class);
return services.size() > 0 ? services.get(0) : null;
}
}