implemented editing of item base data

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2025-10-15 20:59:46 +02:00
parent 3c733a75ee
commit a001074783
3 changed files with 80 additions and 27 deletions

View File

@@ -209,9 +209,7 @@ public class SqliteDb extends BaseDb implements StockDb {
rs.close();
for (var item : list){
var owner = item.owner();
var ownerId = owner instanceof Company comp ? -comp.id() : (owner instanceof UmbrellaUser u ? u.id() : 0);
if (ownerId == 0) throw databaseException("Encountered unknown item owner of type {0}",owner.getClass().getSimpleName());
var ownerId = item.ownerId();
rs = select(ALL).from(TABLE_ITEM_PROPERTIES).leftJoin(PROPERTY_ID,TABLE_PROPERTIES,ID).where(OWNER,equal(ownerId)).where(ITEM_ID,equal(item.id())).exec(db);
while (rs.next()) item.properties().add(Property.of(rs));
rs.close();
@@ -224,10 +222,8 @@ public class SqliteDb extends BaseDb implements StockDb {
@Override
public Item loadItem(Mappable owner, long itemId) {
var ownerId = owner instanceof Company comp ? -comp.id() : (owner instanceof UmbrellaUser u ? u.id() : 0);
if (ownerId == 0) throw databaseException("Failed to load item: unknown owner type ({0})",owner.getClass().getSimpleName());
try {
var rs = select(ALL).from(TABLE_ITEMS).where(OWNER,equal(ownerId)).where(ID,equal(itemId)).exec(db);
var rs = select(ALL).from(TABLE_ITEMS).where(OWNER,equal(Item.ownerId(owner))).where(ID,equal(itemId)).exec(db);
Item result = null;
if (rs.next()) result = Item.of(rs,owner,null);
rs.close();
@@ -293,7 +289,29 @@ public class SqliteDb extends BaseDb implements StockDb {
@Override
public Item save(Item item) {
LOG.log(ERROR,"StockDb.save(…) not implemented!");
if (item.id() == 0){ // TODO
LOG.log(ERROR,"StockDb.save(…) not implemented!");
} else if (item.isDirty()) {
try {
var location = item.location();
var query = update(TABLE_ITEMS).where(OWNER, equal(item.ownerId())).where(ID, equal(item.id()));
if (location == null) {
query.set(CODE,NAME);
} else {
query.set(CODE,NAME,LOCATION_ID);
}
var pq = query.prepare(db);
if (location == null) {
pq.apply(item.code(),item.name());
} else {
pq.apply(item.code(),item.name(),item.location().id());
}
return item.clear();
} catch (SQLException e){
throw databaseException("Failed to update item {0}",item.name());
}
}
return item;
}