fix: only generate slug on create