/// <summary> /// Used to get the current profile version /// </summary> /// <param name="profile"></param> /// <param name="transaction"></param> public double GetVersion(DatabaseVersionSetup.Profile profile, ITransaction transaction) { IConnection connection = profile.RepositoryProfile.GetDatabase(); var access = new DoTrackDataAccess(() => connection, TableName); IDoTrack doTrack = access.Select(profile.RepositoryProfile.DatabaseRepository, transaction); if (doTrack != null) return doTrack.Version; // // todo: Rolf remove this as some stage // Log.Info("Tracker not found on repository name. Older version used database name. Trying on database name"); doTrack = access.Select(profile.RepositoryProfile.DatabaseName, transaction); if (doTrack != null){ Log.Info("Tracker found. Renaming to DatabaseRepository name"); access.Delete(profile.RepositoryProfile.DatabaseName, transaction); doTrack.DatabaseName = profile.RepositoryProfile.DatabaseRepository; access.Insert(doTrack, transaction); return doTrack.Version; } return -1; }
/// <summary> /// Sets the version number /// </summary> /// <param name="profile"></param> /// <param name="version"></param> /// <param name="transaction"></param> public void SetVersion(DatabaseVersionSetup.Profile profile, double version, ITransaction transaction) { IConnection connection = profile.RepositoryProfile.GetDatabase(); var access = new DoTrackDataAccess(() => connection, TableName); var track = new DoTrack { DatabaseName = profile.RepositoryProfile.DatabaseRepository, Version = version }; try{ access.Insert(track, transaction); } catch (Exception){ access.Update(track, transaction); } }