Add software uninstall script property, hydrate with scripts

Also hydrate uninstall script content ID when pulling installers when uninstall script contents aren't requested
This commit is contained in:
Ian Littman 2024-09-07 18:00:24 -05:00 committed by Victor Lyuboslavsky
parent 3287a245de
commit aad34f8c27
No known key found for this signature in database
2 changed files with 7 additions and 2 deletions

View file

@ -222,6 +222,7 @@ SELECT
si.install_script_content_id,
si.pre_install_query,
si.post_install_script_content_id,
si.uninstall_script_content_id,
si.uploaded_at,
COALESCE(st.name, '') AS software_title,
si.platform
@ -246,9 +247,10 @@ WHERE
func (ds *Datastore) GetSoftwareInstallerMetadataByTeamAndTitleID(ctx context.Context, teamID *uint, titleID uint, withScriptContents bool) (*fleet.SoftwareInstaller, error) {
var scriptContentsSelect, scriptContentsFrom string
if withScriptContents {
scriptContentsSelect = ` , inst.contents AS install_script, COALESCE(pisnt.contents, '') AS post_install_script `
scriptContentsSelect = ` , inst.contents AS install_script, COALESCE(pinst.contents, '') AS post_install_script, uninst.contents AS uninstall_script `
scriptContentsFrom = ` LEFT OUTER JOIN script_contents inst ON inst.id = si.install_script_content_id
LEFT OUTER JOIN script_contents pisnt ON pisnt.id = si.post_install_script_content_id `
LEFT OUTER JOIN script_contents pinst ON pinst.id = si.post_install_script_content_id
LEFT OUTER JOIN script_contents uninst ON uninst.id = si.uninstall_script_content_id`
}
query := fmt.Sprintf(`
@ -262,6 +264,7 @@ SELECT
si.install_script_content_id,
si.pre_install_query,
si.post_install_script_content_id,
si.uninstall_script_content_id,
si.uploaded_at,
si.uninstall_script_content_id,
si.self_service,

View file

@ -95,6 +95,8 @@ type SoftwareInstaller struct {
PreInstallQuery string `json:"pre_install_query" db:"pre_install_query"`
// PostInstallScript is the script to run after installing the software package.
PostInstallScript string `json:"post_install_script" db:"post_install_script"`
// UninstallScript is the script to run to uninstall the software package.
UninstallScript string `json:"uninstall_script" db:"uninstall_script"`
// PostInstallScriptContentID is the ID of the post-install script content.
PostInstallScriptContentID *uint `json:"-" db:"post_install_script_content_id"`
// StorageID is the unique identifier for the software package in the software installer store.