P02: Maven multi-module skeleton — domain, application, adapter-persistence, adapter-web, bootstrap
build / build (push) Failing after 18s

This commit is contained in:
ShopForge Course
2026-09-17 12:17:07 +00:00
commit 392516f95c
23 changed files with 363 additions and 0 deletions
@@ -0,0 +1,8 @@
package dev.shopforge.domain;
/** Ek shop. Sirf Java — koi annotation, koi framework nahi. */
public record Shop(TenantId id, String naam, String subdomain, boolean active) {
public Shop activate() { return new Shop(id, naam, subdomain, true); }
public Shop deactivate() { return new Shop(id, naam, subdomain, false); }
}
@@ -0,0 +1,12 @@
package dev.shopforge.domain;
import java.util.Optional;
/**
* PORT — domain batata hai ki use kya chahiye, na ki wo kahan se aayega.
* Iska implementation adapter-persistence me hai. Teer domain ki taraf aata hai, jaata nahi.
*/
public interface ShopRepository {
Optional<Shop> bySubdomain(String subdomain);
Shop save(Shop shop);
}
@@ -0,0 +1,9 @@
package dev.shopforge.domain;
/** Ek shop ki pehchaan. Value object — bani to badal nahi sakti. */
public record TenantId(String value) {
public TenantId {
if (value == null || value.isBlank())
throw new IllegalArgumentException("TenantId khaali nahi ho sakta");
}
}
@@ -0,0 +1,20 @@
package dev.shopforge.domain;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class ShopTest {
@Test
void khaali_tenantId_bante_hi_mana_hai() {
assertThrows(IllegalArgumentException.class, () -> new TenantId(" "));
}
@Test
void activate_naya_object_deta_hai_purana_nahi_badalta() {
Shop band = new Shop(new TenantId("t1"), "Chai Point", "chaipoint", false);
Shop chalu = band.activate();
assertFalse(band.active());
assertTrue(chalu.active());
}
}