# SPDX-License-Identifier: WTFPL from .dbrecord import DbRecord class Vessel(DbRecord): table = "vessel" pk_field = "vid" fields = ('vid', 'vtype', 'vesselname', 'model', 'shipyard', 'loa', 'lwl', 'beam', 'draught', 'draught_min', 'displacement', 'ballast', 'beltpos_aft', 'beltpos_bow', 'shapefile', 'sid_default', 'year_built', 'remarks') def __init__(self, db, vid=None): super().__init__(db, vid) self.title = _("Vessel({})") def create(self): sql = ( "SELECT MIN(v1.vid+1) AS newid " "FROM vessel AS v1 LEFT JOIN vessel AS v2 ON v2.vid=v1.vid+1 " "WHERE v1.vid>=0 AND v2.vid IS NULL" ) self.dcur.execute(sql) row = self.dcur.fetchone() if row is None: # vessel table empty: create first vessel self.pk_value = 1 else: # create additional vessel self.pk_value = row['newid'] self.clear() self.vid = self.pk_value self.vesselname = f"Vessel #{self.pk_value}" self.vtype = 1 # monohull self._insert() self.conn.commit() def save(self, commit=True): super().save() if commit: self.conn.commit() def delete(self): # there must be no assiciated data! pass